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

pull/144/head
jun 8 months 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;
}
private boolean isReverse(List<VodInfo.VodSeries> list) {
// 循环比较相邻元素
for (int i = 0; i < Math.min(list.size()-1,4); i++) {
int ascCount = 0, descCount = 0;
// 比较最多前 6 个相邻元素对
int limit = Math.min(list.size() - 1, 6);
for (int i = 0; i < limit; i++) {
int current = extractNumber(list.get(i).name);
int next = extractNumber(list.get(i + 1).name);
if (current < next) return false;
if (current > next) return true;
if (current < next) {
ascCount++;
if (ascCount == 2) return false;
} else if (current > next) {
descCount++;
if (descCount == 2) return true;
}
}
return false;
}

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

@ -1,5 +1,6 @@
package com.github.tvbox.osc.ui.adapter;
import android.app.Activity;
import android.view.View;
import android.widget.TextView;
@ -30,5 +31,11 @@ public class SeriesFlagAdapter extends BaseQuickAdapter<VodInfo.VodSeriesFlag, B
select.setVisibility(View.GONE);
}
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