From 9f2ac9b89a415bd02b29489c7b3f80fd74e3eeba Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 8 Mar 2023 16:47:17 +0800 Subject: [PATCH] [leanback] fix bug --- .../java/com/fongmi/android/tv/Product.java | 13 ------ .../tv/ui/activity/CollectActivity.java | 13 +++--- .../tv/ui/activity/DetailActivity.java | 1 + .../android/tv/ui/activity/HomeActivity.java | 1 + .../android/tv/ui/activity/KeepActivity.java | 1 + .../android/tv/ui/activity/LiveActivity.java | 1 + .../android/tv/ui/activity/PushActivity.java | 1 + .../tv/ui/activity/SearchActivity.java | 1 + .../tv/ui/activity/SettingActivity.java | 1 + .../android/tv/ui/activity/VodActivity.java | 3 +- .../android/tv/ui/base}/BaseActivity.java | 40 ++++++++++++++----- .../android/tv/ui/base}/BaseFragment.java | 29 +++++++++----- .../tv/ui/fragment/CollectFragment.java | 2 +- .../android/tv/ui/fragment/VodFragment.java | 2 +- .../android/tv/ui/activity/CrashActivity.java | 1 + 15 files changed, 70 insertions(+), 40 deletions(-) rename app/src/{main/java/com/fongmi/android/tv/ui/activity => leanback/java/com/fongmi/android/tv/ui/base}/BaseActivity.java (72%) rename app/src/{main/java/com/fongmi/android/tv/ui/activity => leanback/java/com/fongmi/android/tv/ui/base}/BaseFragment.java (65%) diff --git a/app/src/leanback/java/com/fongmi/android/tv/Product.java b/app/src/leanback/java/com/fongmi/android/tv/Product.java index 83156e5a5..abbf45432 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/Product.java +++ b/app/src/leanback/java/com/fongmi/android/tv/Product.java @@ -1,23 +1,10 @@ package com.fongmi.android.tv; -import android.content.res.Resources; - import com.fongmi.android.tv.ui.activity.LiveActivity; import com.fongmi.android.tv.utils.Prefers; -import me.jessyan.autosize.AutoSizeCompat; - public class Product { - public static Resources hackResources(Resources resources) { - try { - AutoSizeCompat.autoConvertDensityOfGlobal(resources); - return resources; - } catch (Exception ignored) { - return resources; - } - } - public static int getColumn() { return Math.abs(Prefers.getSize() - 7); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index d007ebd39..3b585c792 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -25,6 +25,7 @@ import com.fongmi.android.tv.bean.Collect; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.databinding.ActivityCollectBinding; import com.fongmi.android.tv.model.SiteViewModel; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.fragment.CollectFragment; import com.fongmi.android.tv.ui.presenter.CollectPresenter; import com.fongmi.android.tv.utils.PauseThreadPoolExecutor; @@ -176,12 +177,7 @@ public class CollectActivity extends BaseActivity { class PageAdapter extends FragmentStatePagerAdapter { public PageAdapter(@NonNull FragmentManager fm) { - super(fm); - } - - @Override - public int getCount() { - return mAdapter.size(); + super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull @@ -190,6 +186,11 @@ public class CollectActivity extends BaseActivity { return CollectFragment.newInstance(((Collect) mAdapter.get(position)).getList()); } + @Override + public int getCount() { + return mAdapter.size(); + } + @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index dc9ae0ba9..9d539800a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -41,6 +41,7 @@ import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.net.OkHttp; import com.fongmi.android.tv.player.ExoUtil; import com.fongmi.android.tv.player.Players; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.CustomKeyDownVod; import com.fongmi.android.tv.ui.custom.dialog.DescDialog; import com.fongmi.android.tv.ui.custom.dialog.TrackDialog; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 62eb90323..597188e98 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -31,6 +31,7 @@ import com.fongmi.android.tv.event.ServerEvent; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.server.Server; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.CustomRowPresenter; import com.fongmi.android.tv.ui.custom.CustomSelector; import com.fongmi.android.tv.ui.custom.CustomTitleView; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index 5e7267f58..ca83a5699 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -14,6 +14,7 @@ import com.fongmi.android.tv.databinding.ActivityKeepBinding; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.ui.adapter.KeepAdapter; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; import org.greenrobot.eventbus.Subscribe; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 2ccb4425d..e5d3a03b3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -36,6 +36,7 @@ import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.player.source.Force; import com.fongmi.android.tv.player.source.TVBus; import com.fongmi.android.tv.player.source.ZLive; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.CustomKeyDownLive; import com.fongmi.android.tv.ui.custom.CustomLiveListView; import com.fongmi.android.tv.ui.custom.dialog.LiveDialog; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java index 699e747d3..85e7bd588 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PushActivity.java @@ -10,6 +10,7 @@ import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.R; import com.fongmi.android.tv.databinding.ActivityPushBinding; import com.fongmi.android.tv.server.Server; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.utils.QRCode; import com.fongmi.android.tv.utils.ResUtil; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index 22d2b2a02..35d4c0e78 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -20,6 +20,7 @@ import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.net.OkHttp; import com.fongmi.android.tv.ui.adapter.RecordAdapter; import com.fongmi.android.tv.ui.adapter.WordAdapter; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.CustomKeyboard; import com.fongmi.android.tv.ui.custom.CustomListener; import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index 8c2a8891f..16e7a4391 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -21,6 +21,7 @@ import com.fongmi.android.tv.impl.ConfigCallback; import com.fongmi.android.tv.impl.LiveCallback; import com.fongmi.android.tv.impl.SiteCallback; import com.fongmi.android.tv.net.Callback; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.dialog.ConfigDialog; import com.fongmi.android.tv.ui.custom.dialog.HistoryDialog; import com.fongmi.android.tv.ui.custom.dialog.LiveDialog; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java index 01af36750..26cad2e36 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java @@ -24,6 +24,7 @@ import com.fongmi.android.tv.bean.Class; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.databinding.ActivityVodBinding; +import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.fragment.VodFragment; import com.fongmi.android.tv.ui.presenter.TypePresenter; import com.fongmi.android.tv.utils.ResUtil; @@ -159,7 +160,7 @@ public class VodActivity extends BaseActivity { class PageAdapter extends FragmentStatePagerAdapter { public PageAdapter(@NonNull FragmentManager fm) { - super(fm); + super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } @NonNull diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java similarity index 72% rename from app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java rename to app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java index 8b171435f..698f4c18b 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -1,21 +1,23 @@ -package com.fongmi.android.tv.ui.activity; +package com.fongmi.android.tv.ui.base; import android.app.Activity; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewbinding.ViewBinding; -import com.fongmi.android.tv.Product; import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.WallConfig; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; +import com.fongmi.android.tv.utils.Utils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -23,6 +25,8 @@ import org.greenrobot.eventbus.ThreadMode; import java.io.File; +import me.jessyan.autosize.AutoSizeCompat; + public abstract class BaseActivity extends AppCompatActivity { protected abstract ViewBinding getBinding(); @@ -32,9 +36,9 @@ public abstract class BaseActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(getBinding().getRoot()); EventBus.getDefault().register(this); + Utils.hideSystemUI(this); setWall(); initView(); - initView(savedInstanceState); initEvent(); } @@ -45,9 +49,6 @@ public abstract class BaseActivity extends AppCompatActivity { protected void initView() { } - protected void initView(Bundle savedInstanceState) { - } - protected void initEvent() { } @@ -69,9 +70,13 @@ public abstract class BaseActivity extends AppCompatActivity { } } - @Override - public Resources getResources() { - return Product.hackResources(super.getResources()); + private Resources hackResources(Resources resources) { + try { + AutoSizeCompat.autoConvertDensityOfGlobal(resources); + return resources; + } catch (Exception ignored) { + return resources; + } } @Subscribe(threadMode = ThreadMode.MAIN) @@ -81,6 +86,23 @@ public abstract class BaseActivity extends AppCompatActivity { setWall(); } + @Override + public Resources getResources() { + return hackResources(super.getResources()); + } + + @Override + public void onConfigurationChanged(@NonNull Configuration newConfig) { + super.onConfigurationChanged(newConfig); + Utils.hideSystemUI(this); + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus) Utils.hideSystemUI(this); + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java similarity index 65% rename from app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java rename to app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java index 1c0177bd2..e75228aff 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseFragment.java @@ -1,4 +1,4 @@ -package com.fongmi.android.tv.ui.activity; +package com.fongmi.android.tv.ui.base; import android.os.Bundle; import android.view.LayoutInflater; @@ -14,25 +14,36 @@ public abstract class BaseFragment extends Fragment { protected abstract ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container); + private boolean init; + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return getBinding(inflater, container).getRoot(); } - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - initView(); - initEvent(); - } - protected void initView() { } protected void initEvent() { } - public boolean canBack() { - return true; + private void resume() { + if (init) return; + initView(); + initEvent(); + init = true; + } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if (isVisibleToUser) if (isResumed()) resume(); + } + + @Override + public void onResume() { + super.onResume(); + if (getUserVisibleHint()) resume(); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java index d788b8b45..f8fe9112e 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java @@ -16,9 +16,9 @@ import com.fongmi.android.tv.R; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Vod; import com.fongmi.android.tv.databinding.FragmentVodBinding; -import com.fongmi.android.tv.ui.activity.BaseFragment; import com.fongmi.android.tv.ui.activity.DetailActivity; import com.fongmi.android.tv.ui.activity.VodActivity; +import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.custom.CustomRowPresenter; import com.fongmi.android.tv.ui.custom.CustomSelector; import com.fongmi.android.tv.ui.presenter.VodPresenter; diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 7a6690247..da8450cac 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -21,9 +21,9 @@ import com.fongmi.android.tv.bean.Filter; import com.fongmi.android.tv.bean.Vod; import com.fongmi.android.tv.databinding.FragmentVodBinding; import com.fongmi.android.tv.model.SiteViewModel; -import com.fongmi.android.tv.ui.activity.BaseFragment; import com.fongmi.android.tv.ui.activity.CollectActivity; import com.fongmi.android.tv.ui.activity.DetailActivity; +import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.custom.CustomRowPresenter; import com.fongmi.android.tv.ui.custom.CustomScroller; import com.fongmi.android.tv.ui.custom.CustomSelector; diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java index 4e9505db8..b650976ee 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/CrashActivity.java @@ -5,6 +5,7 @@ import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.R; import com.fongmi.android.tv.databinding.ActivityCrashBinding; +import com.fongmi.android.tv.ui.base.BaseActivity; import java.util.Objects;