Optimize folder ux

pull/594/head
jhengazuki 7 months ago
parent 921fb90498
commit 8b4afdf7e5
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java
  2. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java
  3. 24
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java
  4. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java

@ -23,12 +23,8 @@ public abstract class BaseFragment extends Fragment {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initView();
initEvent();
}
protected void initView() {
}
protected void initEvent() {
}
}

@ -132,4 +132,10 @@ public class CollectFragment extends BaseFragment implements CustomScroller.Call
mViewModel.searchContent(mCollect.getSite(), getKeyword(), page);
mScroller.setLoading(true);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (mBinding != null && !isVisibleToUser) mBinding.recycler.moveToTop();
}
}

@ -15,9 +15,12 @@ import com.fongmi.android.tv.databinding.FragmentFolderBinding;
import com.fongmi.android.tv.ui.base.BaseFragment;
import java.util.HashMap;
import java.util.Optional;
public class TypeFragment extends BaseFragment {
private FragmentFolderBinding mBinding;
public static TypeFragment newInstance(String key, String typeId, Style style, HashMap<String, String> extend, boolean folder) {
Bundle args = new Bundle();
args.putString("key", key);
@ -50,9 +53,13 @@ public class TypeFragment extends BaseFragment {
return (HashMap<String, String>) getArguments().getSerializable("extend");
}
private VodFragment getChild() {
return (VodFragment) getChildFragmentManager().findFragmentById(R.id.container);
}
@Override
protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
return FragmentFolderBinding.inflate(inflater, container, false);
return mBinding = FragmentFolderBinding.inflate(inflater, container, false);
}
@Override
@ -62,22 +69,19 @@ public class TypeFragment extends BaseFragment {
public void openFolder(String typeId) {
VodFragment next = VodFragment.newInstance(getKey(), typeId, getStyle(), getExtend(), getFolder());
VodFragment current = (VodFragment) getChildFragmentManager().findFragmentById(R.id.container);
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
if (current != null) ft.hide(current);
Optional.ofNullable(getChild()).ifPresent(ft::hide);
ft.add(R.id.container, next);
ft.addToBackStack(null);
ft.commit();
}
public void toggleFilter(boolean visible) {
VodFragment current = (VodFragment) getChildFragmentManager().findFragmentById(R.id.container);
if (current != null) current.toggleFilter(visible);
Optional.ofNullable(getChild()).ifPresent(f -> f.toggleFilter(visible));
}
public void onRefresh() {
VodFragment current = (VodFragment) getChildFragmentManager().findFragmentById(R.id.container);
if (current != null) current.onRefresh();
Optional.ofNullable(getChild()).ifPresent(VodFragment::onRefresh);
}
public boolean canBack() {
@ -87,4 +91,10 @@ public class TypeFragment extends BaseFragment {
public void goBack() {
getChildFragmentManager().popBackStack();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (mBinding != null && !isVisibleToUser) Optional.ofNullable(getChild()).ifPresent(f -> f.setUserVisibleHint(false));
}
}

@ -273,4 +273,10 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
mBinding.recycler.requestFocus();
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (mBinding != null) mBinding.recycler.moveToTop();
}
}

Loading…
Cancel
Save