|
|
|
|
@ -156,6 +156,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List |
|
|
|
|
private View mFocus1; |
|
|
|
|
private View mFocus2; |
|
|
|
|
private boolean hasKeyEvent; |
|
|
|
|
private boolean firstTime; |
|
|
|
|
|
|
|
|
|
public static void push(FragmentActivity activity, String text) { |
|
|
|
|
if (FileChooser.isValid(activity, Uri.parse(text))) file(activity, FileChooser.getPathFromUri(activity, Uri.parse(text))); |
|
|
|
|
@ -293,6 +294,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List |
|
|
|
|
getEpisodeView().postDelayed(() -> { |
|
|
|
|
View selectedItem = getEpisodeView().getLayoutManager().findViewByPosition(position); |
|
|
|
|
if (selectedItem != null) selectedItem.requestFocus(); |
|
|
|
|
if (firstTime) mBinding.video.requestFocus(); |
|
|
|
|
firstTime = false; |
|
|
|
|
}, 300); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -321,6 +324,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List |
|
|
|
|
mR2 = this::updateFocus; |
|
|
|
|
mR3 = this::setTraffic; |
|
|
|
|
mR4 = this::showEmpty; |
|
|
|
|
firstTime = true; |
|
|
|
|
setBackground(false); |
|
|
|
|
setRecyclerView(); |
|
|
|
|
setEpisodeView(); |
|
|
|
|
@ -379,6 +383,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List |
|
|
|
|
@Override |
|
|
|
|
public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) { |
|
|
|
|
if (child != null) mFocus1 = child.itemView; |
|
|
|
|
setEpisodeChildKeyListener(child, position); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
mBinding.array.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { |
|
|
|
|
@ -389,6 +394,26 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setEpisodeChildKeyListener(RecyclerView.ViewHolder child, int position) { |
|
|
|
|
if (getEpisodeView() != mBinding.episodeVert) return; |
|
|
|
|
int itemCount = getEpisodeView().getAdapter().getItemCount(); |
|
|
|
|
if (itemCount <= 0) return; |
|
|
|
|
int columns = mEpisodePresenter.getNumColumns(); |
|
|
|
|
int numRows = mEpisodePresenter.getNumRows(); |
|
|
|
|
if (((int)Math.ceil((position + 1)/columns) + 1 == numRows) && (position + columns >= itemCount)) { |
|
|
|
|
child.itemView.setOnKeyListener(new View.OnKeyListener() { |
|
|
|
|
@Override |
|
|
|
|
public boolean onKey(View v, int keyCode, KeyEvent event) { |
|
|
|
|
if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN && event.getAction() == KeyEvent.ACTION_DOWN) { |
|
|
|
|
View lastItem = getEpisodeView().getLayoutManager().findViewByPosition(itemCount - 1); |
|
|
|
|
if (lastItem != null) lastItem.requestFocus(); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setRecyclerView() { |
|
|
|
|
mBinding.flag.setHorizontalSpacing(ResUtil.dp2px(8)); |
|
|
|
|
mBinding.flag.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT); |
|
|
|
|
@ -641,6 +666,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List |
|
|
|
|
if (length > episodeNameLength) episodeNameLength = length; |
|
|
|
|
} |
|
|
|
|
int numColumns = 10; |
|
|
|
|
if (episodeNameLength > 60) numColumns = 1; |
|
|
|
|
if (episodeNameLength > 30) numColumns = 2; |
|
|
|
|
else if (episodeNameLength > 15) numColumns = 3; |
|
|
|
|
else if (episodeNameLength > 10) numColumns = 4; |
|
|
|
|
|