diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java index d37364f9..1606f35f 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/FastSearchActivity.java @@ -177,7 +177,7 @@ public class FastSearchActivity extends BaseActivity { }); mGridView.setHasFixedSize(true); - mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, 4)); + mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, 5)); searchAdapter = new FastSearchAdapter(); mGridView.setAdapter(searchAdapter); @@ -206,7 +206,7 @@ public class FastSearchActivity extends BaseActivity { }); - mGridViewFilter.setLayoutManager(new V7GridLayoutManager(this.mContext, 4)); + mGridViewFilter.setLayoutManager(new V7GridLayoutManager(this.mContext, 5)); searchAdapterFilter = new FastSearchAdapter(); mGridViewFilter.setAdapter(searchAdapterFilter); searchAdapterFilter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java index 5700c794..5700d974 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/GridAdapter.java @@ -26,32 +26,20 @@ import me.jessyan.autosize.utils.AutoSizeUtils; */ public class GridAdapter extends BaseQuickAdapter { private boolean mShowList ; - private int defaultWidth = 280; - private final Style style; // 动态风格,传入时调整图片宽高比 + private int defaultWidth; + public ImgUtil.Style style; // 动态风格,传入时调整图片宽高比 - /** - * style 数据结构:ratio 指定宽高比(宽 / 高),type 表示风格(例如 rect、list) - */ - public static class Style { - public float ratio; - public String type; - public Style(float ratio, String type) { - this.ratio = ratio; - this.type = type; - } - } /** * 如果 style 传 null,则采用 item_grid.xml 中的默认尺寸 */ - public GridAdapter(boolean showList, Style style) { + public GridAdapter(boolean showList, ImgUtil.Style style) { super( showList ? R.layout.item_list:R.layout.item_grid, new ArrayList<>()); this.mShowList = showList; if(style!=null ){ if(style.type.equals("list"))this.mShowList=true; - if(style.ratio<1)this.defaultWidth=214; - if(style.ratio>1.7)this.defaultWidth=340; + this.defaultWidth=ImgUtil.getStyleDefaultWidth(style); } this.style = style; } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java index 8476b63c..3641e685 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/HomeHotVodAdapter.java @@ -2,6 +2,7 @@ package com.github.tvbox.osc.ui.adapter; import android.text.TextUtils; import android.view.View; +import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -25,9 +26,20 @@ import java.util.ArrayList; import me.jessyan.autosize.utils.AutoSizeUtils; public class HomeHotVodAdapter extends BaseQuickAdapter { + private int defaultWidth; + private final ImgUtil.Style style; + private String tvRateValue; - public HomeHotVodAdapter() { + /** + * style 数据结构:ratio 指定宽高比(宽 / 高),type 表示风格(例如 rect、list) + */ + public HomeHotVodAdapter(ImgUtil.Style style,String tvRate) { super(R.layout.item_user_hot_vod, new ArrayList<>()); + if(style!=null){ + this.defaultWidth=ImgUtil.getStyleDefaultWidth(style); + } + this.style=style; + this.tvRateValue=tvRate; } @Override @@ -44,15 +56,12 @@ public class HomeHotVodAdapter extends BaseQuickAdapter= 1.7) { - spanCount = 3; // 横图 - } else if (style.ratio >= 1.3) { - spanCount = 4; // 4:3 - } - } else if ("list".equals(style.type)) { - spanCount = 1; - } + int spanCount = isBaseOnWidth() ? 5 : 6; + if (style != null) { + spanCount = ImgUtil.spanCountByStyle(style, spanCount); + } + if (spanCount == 1) { + mGridView.setLayoutManager(new V7LinearLayoutManager(mContext, spanCount, false)); + } else { + mGridView.setLayoutManager(new V7GridLayoutManager(mContext, spanCount)); } - mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, spanCount)); } gridAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java index 1c2be43d..cebadc74 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java @@ -28,6 +28,7 @@ import com.github.tvbox.osc.ui.activity.SettingActivity; import com.github.tvbox.osc.ui.adapter.HomeHotVodAdapter; import com.github.tvbox.osc.util.FastClickCheckUtil; import com.github.tvbox.osc.util.HawkConfig; +import com.github.tvbox.osc.util.ImgUtil; import com.github.tvbox.osc.util.UA; import com.google.gson.Gson; import com.google.gson.JsonArray; @@ -84,7 +85,9 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen if (Hawk.get(HawkConfig.HOME_REC_STYLE, false)) { tvHotList.setVisibility(View.VISIBLE); tvHotList.setHasFixedSize(true); - tvHotList.setLayoutManager(new V7GridLayoutManager(this.mContext, 5)); + int spanCount = 5; + if(style!=null && Hawk.get(HawkConfig.HOME_REC, 0) == 1)spanCount=ImgUtil.spanCountByStyle(style,spanCount); + tvHotList.setLayoutManager(new V7GridLayoutManager(this.mContext, spanCount)); int paddingLeft = getResources().getDimensionPixelSize(R.dimen.vs_15); int paddingTop = getResources().getDimensionPixelSize(R.dimen.vs_10); int paddingRight = getResources().getDimensionPixelSize(R.dimen.vs_15); @@ -132,6 +135,7 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); mActivity.startActivity(newIntent); } + private ImgUtil.Style style; @Override protected void init() { EventBus.getDefault().register(this); @@ -154,7 +158,16 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen tvPush.setOnFocusChangeListener(focusChangeListener); tvCollect.setOnFocusChangeListener(focusChangeListener); tvHotList = findViewById(R.id.tvHotList); - homeHotVodAdapter = new HomeHotVodAdapter(); + if (Hawk.get(HawkConfig.HOME_REC, 0) == 1 && homeSourceRec!=null) { + style=ImgUtil.initStyle(); + } + String tvRate=""; + if(Hawk.get(HawkConfig.HOME_REC, 0) == 0){ + tvRate="豆瓣热播"; + }else if(Hawk.get(HawkConfig.HOME_REC, 0) == 1){ + tvRate= homeSourceRec!=null?"站点推荐":"豆瓣热播"; + } + homeHotVodAdapter = new HomeHotVodAdapter(style,tvRate); homeHotVodAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { diff --git a/app/src/main/java/com/github/tvbox/osc/util/ImgUtil.java b/app/src/main/java/com/github/tvbox/osc/util/ImgUtil.java index 3fa4aa8c..369812a5 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/ImgUtil.java +++ b/app/src/main/java/com/github/tvbox/osc/util/ImgUtil.java @@ -10,8 +10,12 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.Base64; +import com.github.tvbox.osc.api.ApiConfig; import com.github.tvbox.osc.base.App; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.HashMap; import java.util.Map; import java.util.Random; @@ -19,7 +23,7 @@ import java.util.Random; import me.jessyan.autosize.utils.AutoSizeUtils; /** - *base64图片 + * 图片工具 * @version 1.0.0
*/ public class ImgUtil { @@ -30,6 +34,56 @@ public class ImgUtil { public static int defaultWidth = 244; public static int defaultHeight = 320; + /** + * style 数据结构:ratio 指定宽高比(宽 / 高),type 表示风格(例如 rect、list) + */ + public static class Style { + public float ratio; + public String type; + + public Style(float ratio, String type) { + this.ratio = ratio; + this.type = type; + } + } + + public static Style initStyle() + { + String bStyle = ApiConfig.get().getHomeSourceBean().getStyle(); + if(!bStyle.isEmpty()){ + try { + JSONObject jsonObject = new JSONObject(bStyle); + float ratio = (float) jsonObject.getDouble("ratio"); + String type = jsonObject.getString("type"); + return new Style(ratio, type); + }catch (JSONException e){ + + } + } + return null; + } + + public static int spanCountByStyle(Style style,int defaultCount){ + int spanCount=defaultCount; + if ("rect".equals(style.type)) { + if (style.ratio >= 1.7) { + spanCount = 3; // 横图 + } else if (style.ratio >= 1.3) { + spanCount = 4; // 4:3 + } + } else if ("list".equals(style.type)) { + spanCount = 1; + } + return spanCount; + } + + public static int getStyleDefaultWidth(Style style){ + int styleDefaultWidth = 280; + if(style.ratio<1)styleDefaultWidth=214; + if(style.ratio>1.7)styleDefaultWidth=380; + return styleDefaultWidth; + } + public static Bitmap decodeBase64ToBitmap(String base64Str) { // 去掉 Base64 数据的头部前缀,例如 "data:image/png;base64," String base64Data = base64Str.substring(base64Str.indexOf(",") + 1);