From df5c0fa4fcfd3aedc23dd6c4e3b971d91462d85a Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 23 Feb 2023 20:46:06 +0800 Subject: [PATCH] [mobile] clean code --- .../android/tv/ui/activity/BaseFragment.java | 4 ++++ .../com/fongmi/android/tv/utils/Clock.java | 10 +++++++++- .../com/fongmi/android/tv/utils/Prefers.java | 8 -------- .../android/tv/ui/activity/MainActivity.java | 12 ++--------- .../tv/ui/custom/FragmentStateManager.java | 20 +++++++++++++++---- .../android/tv/ui/fragment/VodFragment.java | 18 +++++------------ .../tv/ui/fragment/child/HomeFragment.java | 13 ++++++------ .../tv/ui/fragment/child/TypeFragment.java | 13 ++++++------ 8 files changed, 50 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java index 91b81bbe6..1c0177bd2 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java @@ -31,4 +31,8 @@ public abstract class BaseFragment extends Fragment { protected void initEvent() { } + + public boolean canBack() { + return true; + } } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Clock.java b/app/src/main/java/com/fongmi/android/tv/utils/Clock.java index 7283500e6..3df09c17f 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Clock.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Clock.java @@ -30,6 +30,14 @@ public class Clock { this.date = new Date(); } + public static void stop() { + get().release(); + } + + public static void start() { + start(null); + } + public static void start(TextView view) { start(view, "HH:mm:ss"); } @@ -56,8 +64,8 @@ public class Clock { private void doJob(TextView view) { try { date.setTime(System.currentTimeMillis()); - view.setText(formatter.format(date)); if (callback != null) callback.onTimeChanged(); + if (view != null) view.setText(formatter.format(date)); } catch (Exception ignored) { } } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java index 76b40887a..0496b20dd 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java @@ -163,14 +163,6 @@ public class Prefers { put("across", across); } - public static boolean isRotate() { - return getBoolean("rotate", true); - } - - public static void putRotate(boolean rotate) { - put("rotate", rotate); - } - public static boolean getUpdate() { return getBoolean("update", true); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 99f258b50..b43da0878 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -30,14 +30,6 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt private ActivityMainBinding mBinding; private boolean confirm; - private VodFragment getVodFragment() { - return (VodFragment) mManager.getFragment(0); - } - - private SettingFragment getSettingFragment() { - return (SettingFragment) mManager.getFragment(1); - } - @Override protected ViewBinding getBinding() { return mBinding = ActivityMainBinding.inflate(getLayoutInflater()); @@ -127,9 +119,9 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt @Override public void onBackPressed() { - if (getSettingFragment().isVisible()) { + if (mManager.isVisible(1)) { mBinding.navigation.setSelectedItemId(R.id.vod); - } else if (getVodFragment().canBack()) { + } else if (mManager.canBack(0)) { if (!confirm) setConfirm(); else finish(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/FragmentStateManager.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/FragmentStateManager.java index bffbdffc8..b51c66fb9 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/FragmentStateManager.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/FragmentStateManager.java @@ -6,6 +6,8 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import com.fongmi.android.tv.ui.activity.BaseFragment; + public abstract class FragmentStateManager { private final FragmentManager fm; @@ -30,11 +32,21 @@ public abstract class FragmentStateManager { ft.commitNowAllowingStateLoss(); } - public String getTag(long id) { - return "android:switcher:" + id; + private String getTag(int position) { + return "android:switcher:" + position; + } + + public BaseFragment getFragment(int position) { + return (BaseFragment) fm.findFragmentByTag(getTag(position)); + } + + public boolean isVisible(int position) { + Fragment fragment = getFragment(position); + return fragment != null && fragment.isVisible(); } - public Fragment getFragment(long id) { - return fm.findFragmentByTag(getTag(id)); + public boolean canBack(int position) { + BaseFragment fragment = getFragment(position); + return fragment != null && fragment.canBack(); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 1288d8bbd..69a478ddd 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -47,12 +47,8 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal return new VodFragment(); } - private HomeFragment getHomeFragment() { - return (HomeFragment) mBinding.pager.getAdapter().instantiateItem(mBinding.pager, 0); - } - - private TypeFragment getTypeFragment() { - return (TypeFragment) mBinding.pager.getAdapter().instantiateItem(mBinding.pager, mBinding.pager.getCurrentItem()); + private BaseFragment getFragment() { + return (BaseFragment) mBinding.pager.getAdapter().instantiateItem(mBinding.pager, mBinding.pager.getCurrentItem()); } private Site getSite() { @@ -147,7 +143,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal @Override public void setFilter(String key, String value) { - getTypeFragment().setFilter(key, value); + ((TypeFragment) getFragment()).setFilter(key, value); } public void toggleLink(int dy) { @@ -169,13 +165,9 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } } + @Override public boolean canBack() { - try { - if (mBinding.pager.getCurrentItem() == 0) return getHomeFragment().canBack(); - else return getTypeFragment().canBack(); - } catch (Exception e) { - return true; - } + return getFragment().canBack(); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java index 1a1d24621..f662f9110 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java @@ -99,12 +99,6 @@ public class HomeFragment extends BaseFragment implements VodAdapter.OnClickList mHistoryAdapter.notifyItemRangeChanged(0, mHistoryAdapter.getItemCount()); } - public boolean canBack() { - if (!mHistoryAdapter.isDelete()) return true; - setHistoryDelete(false); - return false; - } - @Override public void onItemClick(Vod item) { if (item.shouldSearch()) onLongClick(item); @@ -147,4 +141,11 @@ public class HomeFragment extends BaseFragment implements VodAdapter.OnClickList super.onResume(); getHistory(); } + + @Override + public boolean canBack() { + if (!mHistoryAdapter.isDelete()) return true; + setHistoryDelete(false); + return false; + } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java index 3a52214cc..4711ab597 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java @@ -125,12 +125,6 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac getVideo(typeId, "1"); } - public boolean canBack() { - if (mTypeIds.size() == 0) return true; - refresh(2); - return false; - } - @Override public void onLoadMore(String page) { if (isFolder()) return; @@ -162,4 +156,11 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac super.onConfigurationChanged(newConfig); mGridLayoutManager.setSpanCount(Product.getColumn(getActivity())); } + + @Override + public boolean canBack() { + if (mTypeIds.size() == 0) return true; + refresh(2); + return false; + } }