优化详情集数过多时的光标合理性

pull/144/head
jun 1 year ago
parent b4da09db30
commit ae33f563e5
  1. 15
      app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java
  2. 22
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  3. 7
      app/src/main/java/com/github/tvbox/osc/ui/adapter/SeriesFlagAdapter.java

@ -100,12 +100,19 @@ public class VodInfo implements Serializable {
return 0; return 0;
} }
private boolean isReverse(List<VodInfo.VodSeries> list) { private boolean isReverse(List<VodInfo.VodSeries> list) {
// 循环比较相邻元素 int ascCount = 0, descCount = 0;
for (int i = 0; i < Math.min(list.size()-1,4); i++) { // 比较最多前 6 个相邻元素对
int limit = Math.min(list.size() - 1, 6);
for (int i = 0; i < limit; i++) {
int current = extractNumber(list.get(i).name); int current = extractNumber(list.get(i).name);
int next = extractNumber(list.get(i + 1).name); int next = extractNumber(list.get(i + 1).name);
if (current < next) return false; if (current < next) {
if (current > next) return true; ascCount++;
if (ascCount == 2) return false;
} else if (current > next) {
descCount++;
if (descCount == 2) return true;
}
} }
return false; return false;
} }

@ -354,16 +354,16 @@ public class DetailActivity extends BaseActivity {
public void onItemClick(TvRecyclerView parent, View itemView, int position) { public void onItemClick(TvRecyclerView parent, View itemView, int position) {
} }
}); });
mGridView.setOnFocusChangeListener(new View.OnFocusChangeListener() { // mGridView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override // @Override
public void onFocusChange(View v, boolean hasFocus) { // public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus && vodInfo.playIndex != -1) { // if (hasFocus && vodInfo.playIndex != -1) {
// 当获得焦点且有目标位置时,执行滚动和聚焦 // // 当获得焦点且有目标位置时,执行滚动和聚焦
LOG.i("echo-onFocusChange"); // LOG.i("echo-onFocusChange");
mGridView.setSelection(vodInfo.playIndex); // mGridView.setSelection(vodInfo.playIndex);
} // }
} // }
}); // });
mGridViewFlag.setOnItemListener(new TvRecyclerView.OnItemListener() { mGridViewFlag.setOnItemListener(new TvRecyclerView.OnItemListener() {
private void refresh(View itemView, int position) { private void refresh(View itemView, int position) {
String newFlag = seriesFlagAdapter.getData().get(position).name; String newFlag = seriesFlagAdapter.getData().get(position).name;
@ -457,7 +457,7 @@ public class DetailActivity extends BaseActivity {
TextView txtView = itemView.findViewById(R.id.tvSeriesGroup); TextView txtView = itemView.findViewById(R.id.tvSeriesGroup);
txtView.setTextColor(mContext.getResources().getColor(R.color.color_02F8E1)); txtView.setTextColor(mContext.getResources().getColor(R.color.color_02F8E1));
if (vodInfo != null && vodInfo.seriesMap.get(vodInfo.playFlag).size() > 0) { if (vodInfo != null && vodInfo.seriesMap.get(vodInfo.playFlag).size() > 0) {
int targetPos = position * GroupCount+1; int targetPos = position * GroupCount;
mGridView.smoothScrollToPosition(targetPos); mGridView.smoothScrollToPosition(targetPos);
} }
currentSeriesGroupView = itemView; currentSeriesGroupView = itemView;

@ -1,5 +1,6 @@
package com.github.tvbox.osc.ui.adapter; package com.github.tvbox.osc.ui.adapter;
import android.app.Activity;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
@ -30,5 +31,11 @@ public class SeriesFlagAdapter extends BaseQuickAdapter<VodInfo.VodSeriesFlag, B
select.setVisibility(View.GONE); select.setVisibility(View.GONE);
} }
helper.setText(R.id.tvSeriesFlag, item.name); helper.setText(R.id.tvSeriesFlag, item.name);
View mSeriesGroupTv = ((Activity) helper.itemView.getContext()).findViewById(R.id.mSeriesGroupTv);
if (mSeriesGroupTv != null && mSeriesGroupTv.getVisibility() == View.VISIBLE) {
helper.itemView.setNextFocusDownId(R.id.mSeriesSortTv);
}else {
helper.itemView.setNextFocusDownId(R.id.mGridView);
}
} }
} }
Loading…
Cancel
Save