|
|
|
|
@ -39,6 +39,7 @@ import com.github.tvbox.osc.event.RefreshEvent; |
|
|
|
|
import com.github.tvbox.osc.picasso.RoundTransformation; |
|
|
|
|
import com.github.tvbox.osc.ui.adapter.SeriesAdapter; |
|
|
|
|
import com.github.tvbox.osc.ui.adapter.SeriesFlagAdapter; |
|
|
|
|
import com.github.tvbox.osc.ui.dialog.DescDialog; |
|
|
|
|
import com.github.tvbox.osc.ui.dialog.QuickSearchDialog; |
|
|
|
|
import com.github.tvbox.osc.ui.fragment.PlayFragment; |
|
|
|
|
import com.github.tvbox.osc.util.DefaultConfig; |
|
|
|
|
@ -111,13 +112,16 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
private TextView tvPlayUrl; |
|
|
|
|
private TextView tvDes; |
|
|
|
|
private TextView tvPlay; |
|
|
|
|
private TextView tvSort; |
|
|
|
|
// private TextView tvSort;
|
|
|
|
|
private TextView tvDesc; |
|
|
|
|
private TextView tvSeriesSort; |
|
|
|
|
private TextView tvQuickSearch; |
|
|
|
|
private TextView tvCollect; |
|
|
|
|
private TvRecyclerView mGridViewFlag; |
|
|
|
|
private TvRecyclerView mGridView; |
|
|
|
|
private TvRecyclerView mSeriesGroupView; |
|
|
|
|
private LinearLayout mEmptyPlayList; |
|
|
|
|
private LinearLayout tvSeriesGroup; |
|
|
|
|
private SourceViewModel sourceViewModel; |
|
|
|
|
private Movie.Video mVideo; |
|
|
|
|
private VodInfo vodInfo; |
|
|
|
|
@ -170,7 +174,9 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
tvPlayUrl = findViewById(R.id.tvPlayUrl); |
|
|
|
|
tvDes = findViewById(R.id.tvDes); |
|
|
|
|
tvPlay = findViewById(R.id.tvPlay); |
|
|
|
|
tvSort = findViewById(R.id.tvSort); |
|
|
|
|
// tvSort = findViewById(R.id.tvSort);
|
|
|
|
|
tvDesc = findViewById(R.id.tvDesc); |
|
|
|
|
tvSeriesSort = findViewById(R.id.tvSeriesSort); |
|
|
|
|
tvCollect = findViewById(R.id.tvCollect); |
|
|
|
|
tvQuickSearch = findViewById(R.id.tvQuickSearch); |
|
|
|
|
mEmptyPlayList = findViewById(R.id.mEmptyPlaylist); |
|
|
|
|
@ -198,6 +204,7 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
mSeriesGroupView = findViewById(R.id.mSeriesGroupView); |
|
|
|
|
tvSeriesGroup = findViewById(R.id.tvSeriesGroup); |
|
|
|
|
mSeriesGroupView.setHasFixedSize(true); |
|
|
|
|
mSeriesGroupView.setLayoutManager(new V7LinearLayoutManager(this.mContext, 0, false)); |
|
|
|
|
seriesGroupAdapter = new BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_series_group, seriesGroupOptions) { |
|
|
|
|
@ -212,24 +219,29 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
//禁用播放地址焦点
|
|
|
|
|
tvPlayUrl.setFocusable(false); |
|
|
|
|
|
|
|
|
|
llPlayerFragmentContainerBlock.setOnClickListener((view -> toggleFullPreview())); |
|
|
|
|
|
|
|
|
|
tvSort.setOnClickListener(new View.OnClickListener() { |
|
|
|
|
@SuppressLint("NotifyDataSetChanged") |
|
|
|
|
@Override |
|
|
|
|
public void onClick(View v) { |
|
|
|
|
if (vodInfo != null && vodInfo.seriesMap.size() > 0) { |
|
|
|
|
vodInfo.reverseSort = !vodInfo.reverseSort; |
|
|
|
|
isReverse = !isReverse; |
|
|
|
|
vodInfo.reverse(); |
|
|
|
|
vodInfo.playIndex=(vodInfo.seriesMap.get(vodInfo.playFlag).size()-1)-vodInfo.playIndex; |
|
|
|
|
// insertVod(sourceKey, vodInfo);
|
|
|
|
|
firstReverse = true; |
|
|
|
|
setSeriesGroupOptions(); |
|
|
|
|
seriesAdapter.notifyDataSetChanged(); |
|
|
|
|
} |
|
|
|
|
llPlayerFragmentContainerBlock.setOnClickListener(v -> { |
|
|
|
|
toggleFullPreview(); |
|
|
|
|
if (firstReverse) { |
|
|
|
|
jumpToPlay(); |
|
|
|
|
firstReverse=false; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// tvSort.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
// @SuppressLint("NotifyDataSetChanged")
|
|
|
|
|
// @Override
|
|
|
|
|
// public void onClick(View v) {
|
|
|
|
|
// if (vodInfo != null && vodInfo.seriesMap.size() > 0) {
|
|
|
|
|
// vodInfo.reverseSort = !vodInfo.reverseSort;
|
|
|
|
|
// isReverse = !isReverse;
|
|
|
|
|
// vodInfo.reverse();
|
|
|
|
|
// vodInfo.playIndex=(vodInfo.seriesMap.get(vodInfo.playFlag).size()-1)-vodInfo.playIndex;
|
|
|
|
|
// firstReverse = true;
|
|
|
|
|
// setSeriesGroupOptions();
|
|
|
|
|
// seriesAdapter.notifyDataSetChanged();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
tvPlay.setOnClickListener(new View.OnClickListener() { |
|
|
|
|
@Override |
|
|
|
|
public void onClick(View v) { |
|
|
|
|
@ -302,6 +314,39 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
Toast.makeText(DetailActivity.this, "已复制", Toast.LENGTH_SHORT).show(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tvSeriesSort.setOnClickListener(new View.OnClickListener() { |
|
|
|
|
@SuppressLint("NotifyDataSetChanged") |
|
|
|
|
@Override |
|
|
|
|
public void onClick(View v) { |
|
|
|
|
if (vodInfo != null && vodInfo.seriesMap.size() > 0) { |
|
|
|
|
vodInfo.reverseSort = !vodInfo.reverseSort; |
|
|
|
|
isReverse = !isReverse; |
|
|
|
|
vodInfo.reverse(); |
|
|
|
|
vodInfo.playIndex=(vodInfo.seriesMap.get(vodInfo.playFlag).size()-1)-vodInfo.playIndex; |
|
|
|
|
firstReverse = !firstReverse; |
|
|
|
|
setSeriesGroupOptions(); |
|
|
|
|
seriesAdapter.notifyDataSetChanged(); |
|
|
|
|
mGridView.smoothScrollToPosition(vodInfo.playIndex); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
tvDesc.setOnClickListener(new View.OnClickListener() { |
|
|
|
|
@Override |
|
|
|
|
public void onClick(View v) { |
|
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
FastClickCheckUtil.check(v); |
|
|
|
|
DescDialog dialog = new DescDialog(mContext); |
|
|
|
|
dialog.setDescribe(removeHtmlTag(mVideo.des)); |
|
|
|
|
dialog.show(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() { |
|
|
|
|
@Override |
|
|
|
|
public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) { |
|
|
|
|
@ -543,6 +588,25 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
}, 100); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 提取字符串中的第一个数字
|
|
|
|
|
private int extractNumber(String name) { |
|
|
|
|
java.util.regex.Matcher matcher = java.util.regex.Pattern.compile("\\d+").matcher(name); |
|
|
|
|
if (matcher.find()) { |
|
|
|
|
return Integer.parseInt(matcher.group()); |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
private boolean isReverse(List<VodInfo.VodSeries> list) { |
|
|
|
|
// 循环比较相邻元素
|
|
|
|
|
for (int i = 0; i < 5; 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; |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@SuppressLint("NotifyDataSetChanged") |
|
|
|
|
private void setSeriesGroupOptions(){ |
|
|
|
|
List<VodInfo.VodSeries> list = vodInfo.seriesMap.get(vodInfo.playFlag); |
|
|
|
|
@ -553,7 +617,8 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
if(listSize>100 && listSize<=400)GroupCount=60; |
|
|
|
|
if(listSize>400)GroupCount=120; |
|
|
|
|
if(listSize > GroupCount) { |
|
|
|
|
mSeriesGroupView.setVisibility(View.VISIBLE); |
|
|
|
|
tvSeriesSort.setText(isReverse(list)?"倒序":"正序"); |
|
|
|
|
tvSeriesGroup.setVisibility(View.VISIBLE); |
|
|
|
|
int remainedOptionSize = listSize % GroupCount; |
|
|
|
|
int optionSize = listSize / GroupCount; |
|
|
|
|
|
|
|
|
|
@ -575,7 +640,7 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
|
|
|
|
|
seriesGroupAdapter.notifyDataSetChanged(); |
|
|
|
|
}else { |
|
|
|
|
mSeriesGroupView.setVisibility(View.GONE); |
|
|
|
|
tvSeriesGroup.setVisibility(View.GONE); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -694,7 +759,7 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
} else { |
|
|
|
|
mGridViewFlag.setVisibility(View.GONE); |
|
|
|
|
mGridView.setVisibility(View.GONE); |
|
|
|
|
mSeriesGroupView.setVisibility(View.GONE); |
|
|
|
|
tvSeriesGroup.setVisibility(View.GONE); |
|
|
|
|
tvPlay.setVisibility(View.GONE); |
|
|
|
|
mEmptyPlayList.setVisibility(View.VISIBLE); |
|
|
|
|
} |
|
|
|
|
@ -924,7 +989,7 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
toggleFullPreview(); |
|
|
|
|
mGridView.requestFocus(); |
|
|
|
|
List<VodInfo.VodSeries> list = vodInfo.seriesMap.get(vodInfo.playFlag); |
|
|
|
|
mSeriesGroupView.setVisibility(list.size()>GroupCount ? View.VISIBLE : View.GONE); |
|
|
|
|
tvSeriesGroup.setVisibility(list.size()>GroupCount ? View.VISIBLE : View.GONE); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (seriesSelect) { |
|
|
|
|
@ -965,11 +1030,12 @@ public class DetailActivity extends BaseActivity { |
|
|
|
|
llPlayerFragmentContainerBlock.setVisibility(fullWindows ? View.GONE : View.VISIBLE); |
|
|
|
|
mGridView.setVisibility(fullWindows ? View.GONE : View.VISIBLE); |
|
|
|
|
mGridViewFlag.setVisibility(fullWindows ? View.GONE : View.VISIBLE); |
|
|
|
|
mSeriesGroupView.setVisibility(fullWindows ? View.GONE : View.VISIBLE); |
|
|
|
|
tvSeriesGroup.setVisibility(fullWindows ? View.GONE : View.VISIBLE); |
|
|
|
|
|
|
|
|
|
//全屏下禁用详情页几个按键的焦点 防止上键跑过来
|
|
|
|
|
tvPlay.setFocusable(!fullWindows); |
|
|
|
|
tvSort.setFocusable(!fullWindows); |
|
|
|
|
// tvSort.setFocusable(!fullWindows);
|
|
|
|
|
tvDesc.setFocusable(!fullWindows); |
|
|
|
|
tvCollect.setFocusable(!fullWindows); |
|
|
|
|
tvQuickSearch.setFocusable(!fullWindows); |
|
|
|
|
toggleSubtitleTextSize(); |
|
|
|
|
|