增加详情页播放列表宽度自适应功能

pull/38/head
amoylel 4 years ago
parent da605700ca
commit 7145ca6631
  1. 32
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  2. 9
      app/src/main/res/layout/item_series.xml

@ -70,6 +70,12 @@ import java.util.concurrent.Executors;
import me.jessyan.autosize.utils.AutoSizeUtils;
import android.graphics.Paint;
import android.text.TextPaint;
import androidx.annotation.NonNull;
import android.graphics.Typeface;
import androidx.recyclerview.widget.RecyclerView;
/**
* @author pj567
* @date :2020/12/22
@ -110,6 +116,7 @@ public class DetailActivity extends BaseActivity {
private View seriesFlagFocus = null;
private boolean isReverse;
private String preFlag="";
private V7GridLayoutManager mGridViewLayoutMgr = null;
@Override
protected int getLayoutResID() {
@ -148,7 +155,10 @@ public class DetailActivity extends BaseActivity {
mEmptyPlayList = findViewById(R.id.mEmptyPlaylist);
mGridView = findViewById(R.id.mGridView);
mGridView.setHasFixedSize(true);
mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, isBaseOnWidth() ? 6 : 7));
mGridView.setHasFixedSize(false);
this.mGridViewLayoutMgr = new V7GridLayoutManager(this.mContext, isBaseOnWidth() ? 6 : 7);
mGridView.setLayoutManager(this.mGridViewLayoutMgr);
// mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, isBaseOnWidth() ? 6 : 7));
seriesAdapter = new SeriesAdapter();
mGridView.setAdapter(seriesAdapter);
mGridViewFlag = findViewById(R.id.mGridViewFlag);
@ -382,6 +392,26 @@ public class DetailActivity extends BaseActivity {
if(canSelect)vodInfo.seriesMap.get(vodInfo.playFlag).get(vodInfo.playIndex).selected = true;
}
Paint pFont = new Paint();
// pFont.setTypeface(Typeface.DEFAULT );
Rect rect = new Rect();
List<VodInfo.VodSeries> list = vodInfo.seriesMap.get(vodInfo.playFlag);
int w = 1;
for(int i =0; i < list.size(); ++i){
String name = list.get(i).name;
pFont.getTextBounds(name, 0, name.length(), rect);
if(w < rect.width()){
w = rect.width();
}
}
w += 32;
int screenWidth = getWindowManager().getDefaultDisplay().getWidth()/3;
int offset = screenWidth/w;
if(offset <=1) offset =1;
if(offset > 6) offset =6;
this.mGridViewLayoutMgr.setSpanCount(offset);
seriesAdapter.setNewData(vodInfo.seriesMap.get(vodInfo.playFlag));
mGridView.postDelayed(new Runnable() {
@Override

@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="@dimen/vs_5"
android:background="@drawable/shape_source_series_focus"
android:focusable="true">
<TextView
android:id="@+id/tvSeries"
android:layout_width="@dimen/vs_190"
android:layout_width="match_parent"
android:layout_height="@dimen/vs_50"
android:ellipsize="marquee"
android:gravity="center"
@ -17,4 +18,4 @@
android:singleLine="true"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_20" />
</FrameLayout>
</LinearLayout>
Loading…
Cancel
Save