1兼容道长本地js(drpy);2首页UI调整;3热搜词联想切换为爱奇艺;4 js引擎-req方法识别Content-Type;5嗅探带上cookie播放;6部分pk配置任然加载失败的bug

pull/65/head
于俊 3 years ago
parent dc61861380
commit 9abe4af647
  1. 2
      app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java
  2. 6
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  3. 69
      app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
  4. 13
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
  5. 4
      app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java
  6. 69
      app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java
  7. 1
      app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java
  8. 532
      app/src/main/res/layout/fragment_user.xml

@ -88,7 +88,7 @@ public class ApiConfig {
String content = json;
try {
if (AES.isJson(content)) return content;
if(!content.startsWith("2423")){
if(content.contains("\\*\\*")){
String[] data = json.split("\\*\\*");
content = new String(Base64.decode(data[1], Base64.DEFAULT));
}

@ -1489,7 +1489,8 @@ public class PlayActivity extends BaseActivity {
for (String k : hds.keySet()) {
if (k.equalsIgnoreCase("user-agent")
|| k.equalsIgnoreCase("referer")
|| k.equalsIgnoreCase("origin")) {
|| k.equalsIgnoreCase("origin")
|| k.equalsIgnoreCase("cookie")) {
webHeaders.put(k, hds.get(k));
}
}
@ -1624,7 +1625,8 @@ public class PlayActivity extends BaseActivity {
for (String k : hds.keySet()) {
if (k.equalsIgnoreCase("user-agent")
|| k.equalsIgnoreCase("referer")
|| k.equalsIgnoreCase("origin")) {
|| k.equalsIgnoreCase("origin")
|| k.equalsIgnoreCase("cookie")) {
webHeaders.put(k, hds.get(k));
}
}

@ -275,23 +275,49 @@ public class SearchActivity extends BaseActivity {
* 拼音联想
*/
private void loadRec(String key) {
OkGo.<String>get("https://s.video.qq.com/smartbox")
.params("plat", 2)
.params("ver", 0)
.params("num", 20)
.params("otype", "json")
.params("query", key)
// OkGo.<String>get("https://s.video.qq.com/smartbox")
// .params("plat", 2)
// .params("ver", 0)
// .params("num", 20)
// .params("otype", "json")
// .params("query", key)
// .execute(new AbsCallback<String>() {
// @Override
// public void onSuccess(Response<String> response) {
// try {
// ArrayList<String> hots = new ArrayList<>();
// String result = response.body();
// JsonObject json = JsonParser.parseString(result.substring(result.indexOf("{"), result.lastIndexOf("}") + 1)).getAsJsonObject();
// JsonArray itemList = json.get("item").getAsJsonArray();
// for (JsonElement ele : itemList) {
// JsonObject obj = (JsonObject) ele;
// hots.add(obj.get("word").getAsString().trim().replaceAll("<|>|《|》|-", "").split(" ")[0]);
// }
// wordAdapter.setNewData(hots);
// } catch (Throwable th) {
// th.printStackTrace();
// }
// }
//
// @Override
// public String convertResponse(okhttp3.Response response) throws Throwable {
// return response.body().string();
// }
// });
OkGo.<String>get("https://suggest.video.iqiyi.com/")
.params("if", "mobile")
.params("key", key)
.execute(new AbsCallback<String>() {
@Override
public void onSuccess(Response<String> response) {
try {
ArrayList<String> hots = new ArrayList<>();
String result = response.body();
JsonObject json = JsonParser.parseString(result.substring(result.indexOf("{"), result.lastIndexOf("}") + 1)).getAsJsonObject();
JsonArray itemList = json.get("item").getAsJsonArray();
JsonObject json = JsonParser.parseString(result).getAsJsonObject();
JsonArray itemList = json.get("data").getAsJsonArray();
for (JsonElement ele : itemList) {
JsonObject obj = (JsonObject) ele;
hots.add(obj.get("word").getAsString().trim().replaceAll("<|>|《|》|-", "").split(" ")[0]);
hots.add(obj.get("name").getAsString().trim().replaceAll("<|>|《|》|-", ""));
}
wordAdapter.setNewData(hots);
} catch (Throwable th) {
@ -304,31 +330,6 @@ public class SearchActivity extends BaseActivity {
return response.body().string();
}
});
// OkGo.<String>get("https://suggest.video.iqiyi.com/")
// .params("if", "mobile")
// .params("key", key)
// .execute(new AbsCallback<String>() {
// @Override
// public void onSuccess(Response<String> response) {
// try {
// ArrayList<String> hots = new ArrayList<>();
// String result = response.body();
// JsonObject json = JsonParser.parseString(result).getAsJsonObject();
// JsonArray itemList = json.get("data").getAsJsonArray();
// for (JsonElement ele : itemList) {
// JsonObject obj = (JsonObject) ele;
// hots.add(obj.get("name").getAsString().trim());
// }
// } catch (Throwable th) {
// th.printStackTrace();
// }
// }
//
// @Override
// public String convertResponse(okhttp3.Response response) throws Throwable {
// return response.body().string();
// }
// });
}
private void initData() {

@ -1507,7 +1507,8 @@ public class PlayFragment extends BaseLazyFragment {
for (String k : hds.keySet()) {
if (k.equalsIgnoreCase("user-agent")
|| k.equalsIgnoreCase("referer")
|| k.equalsIgnoreCase("origin")) {
|| k.equalsIgnoreCase("origin")
|| k.equalsIgnoreCase("cookie")) {
webHeaders.put(k, hds.get(k));
}
}
@ -1609,13 +1610,6 @@ public class PlayFragment extends BaseLazyFragment {
@Override
public void onLoadFinished(XWalkView view, String url) {
super.onLoadFinished(view, url);
String click=sourceBean.getClickSelector();
LOG.i("onLoadFinished url:" + url);
if(!click.isEmpty() && url.contains(click.split(";")[0])){
String js="$(\""+ click.split(";")[1]+"\").click();";
LOG.i(js);
mXwalkWebView.loadUrl("javascript:"+js);
}
}
@Override
@ -1650,7 +1644,8 @@ public class PlayFragment extends BaseLazyFragment {
for (String k : hds.keySet()) {
if (k.equalsIgnoreCase("user-agent")
|| k.equalsIgnoreCase("referer")
|| k.equalsIgnoreCase("origin")) {
|| k.equalsIgnoreCase("origin")
|| k.equalsIgnoreCase("cookie")) {
webHeaders.put(k, hds.get(k));
}
}

@ -35,6 +35,7 @@ import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.Response;
import com.orhanobut.hawk.Hawk;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@ -119,7 +120,8 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
tvPush.setOnFocusChangeListener(focusChangeListener);
tvCollect.setOnFocusChangeListener(focusChangeListener);
TvRecyclerView tvHotList = findViewById(R.id.tvHotList);
homeHotVodAdapter = new HomeHotVodAdapter();
tvHotList.setHasFixedSize(true);
tvHotList.setLayoutManager(new V7GridLayoutManager(this.mContext, 6)); homeHotVodAdapter = new HomeHotVodAdapter();
homeHotVodAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {

@ -17,8 +17,14 @@ import com.github.tvbox.quickjs.QuickJSContext;
import com.lzy.okgo.OkGo;
import org.json.JSONObject;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@ -220,8 +226,8 @@ public class JSEngine {
}
if (body == null) {
String dataBody = opt.optString("body", "").trim();
if (!dataBody.isEmpty() && headers.get("content-type") != null) {
body = RequestBody.create(MediaType.parse(headers.get("content-type")), opt.optString("body", ""));
if (!dataBody.isEmpty() && headers.get("Content-Type") != null) {
body = RequestBody.create(MediaType.parse(headers.get("Content-Type")), opt.optString("body", ""));
}
}
if (body == null) {
@ -252,7 +258,11 @@ public class JSEngine {
} else if (returnBuffer == 2) {
jsObject.setProperty("content", Base64.encodeToString(response.body().bytes(), Base64.DEFAULT));
} else {
jsObject.setProperty("content", response.body().string());
String res=response.body().string();
if(headers.get("Content-Type")!=null && headers.get("Content-Type").contains("=")){
res=new String(res.getBytes(),headers.get("Content-Type").split("=")[1].trim());
}
jsObject.setProperty("content", res);
}
return jsObject;
} catch (Throwable throwable) {
@ -261,6 +271,59 @@ public class JSEngine {
return "";
}
});
jsContext.getGlobalObject().setProperty("joinUrl", new JSCallFunction() {
@Override
public String call(Object... args) {
URL url;
String q="";
try {
String parent = args[0].toString();
String child = args[1].toString();
// TODO
if(parent.isEmpty()){
return child;
}
url = new URL(new URL(parent),child);
q= url.toExternalForm();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return q;
}
});
jsContext.getGlobalObject().setProperty("pdfh", new JSCallFunction() {
@Override
public Element call(Object... args) {
try {
// TODO
String html=args[0].toString();
Document doc=Jsoup.parse(html);
return doc.selectFirst(args[1].toString().trim());
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return null;
}
});
jsContext.getGlobalObject().setProperty("pdfa", new JSCallFunction() {
@Override
public ArrayList<String> call(Object... args) {
try {
// TODO
String html=args[0].toString();
Document doc=Jsoup.parse(html);
Elements list=doc.select(args[1].toString().trim());
ArrayList<String> arraylist=new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
arraylist.add(list.get(i).html());
}
return arraylist;
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return null;
}
});
}
}

@ -50,6 +50,7 @@ public class SpiderJS extends Spider {
} catch (Exception e) {
e.printStackTrace();
}
jsContent = jsContent.replace("export default {", "__JS_SPIDER__ ={");
jsContent = jsContent.replace("__JS_SPIDER__", "globalThis." + moduleKey);
ctx.evaluateModule(jsContent, js);
jsObject = (JSObject) ctx.getProperty(globalThis, moduleKey);

@ -1,275 +1,283 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/vs_40">
<LinearLayout
android:id="@+id/tvUserHome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/tvHistory"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_history" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="历史"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvLive"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_live" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="直播"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvSearch"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_search" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="搜索"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
android:paddingLeft="@dimen/vs_40"
android:paddingRight="@dimen/vs_40">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:fillViewport="true"
android:overScrollMode="never">
<LinearLayout
android:id="@+id/tvPush"
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_push" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="推送"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/tvFavorite"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_collect" />
<TextView
<LinearLayout
android:id="@+id/tvUserHome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="收藏"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvSetting"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_setting" />
<TextView
android:layout_width="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/tvHistory"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_history" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="历史"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvLive"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_live" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="直播"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvSearch"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_search" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="搜索"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvPush"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_push" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="推送"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvFavorite"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_collect" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="收藏"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
<LinearLayout
android:id="@+id/tvSetting"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_100"
android:layout_gravity="center"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_user_focus"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_15"
android:paddingTop="@dimen/vs_15"
android:paddingRight="@dimen/vs_15"
android:paddingBottom="@dimen/vs_15">
<ImageView
android:layout_width="@dimen/vs_50"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:alpha="0.75"
android:src="@drawable/icon_setting" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="设置"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
</LinearLayout>
<com.owen.tvrecyclerview.widget.TvRecyclerView
android:id="@+id/tvHotList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="设置"
android:textAlignment="gravity"
android:textColor="@color/color_CCFFFFFF"
android:textSize="@dimen/ts_40" />
</LinearLayout>
</LinearLayout>
<com.owen.tvrecyclerview.widget.TvRecyclerView
android:id="@+id/tvHotList"
android:layout_width="match_parent"
android:layout_height="@dimen/vs_440"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_0"
android:paddingTop="@dimen/vs_40"
android:paddingRight="@dimen/vs_0"
android:paddingBottom="@dimen/vs_40"
app:tv_horizontalSpacingWithMargins="@dimen/vs_10"
app:tv_layoutManager="V7LinearLayoutManager"
app:tv_selectedItemIsCentered="true"
app:tv_verticalSpacingWithMargins="@dimen/vs_10" />
</LinearLayout>
android:layout_below="@+id/tvUserHome"
android:paddingLeft="@dimen/vs_0"
android:paddingTop="@dimen/vs_30"
android:paddingRight="@dimen/vs_0"
android:paddingBottom="@dimen/vs_20"
app:tv_horizontalSpacingWithMargins="@dimen/vs_10"
app:tv_selectedItemIsCentered="true"
app:tv_verticalSpacingWithMargins="@dimen/vs_10" />
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</RelativeLayout>
Loading…
Cancel
Save