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 ed50a7992..0454266c9 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 @@ -72,6 +72,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private HistoryPresenter mPresenter; private ArrayObjectAdapter mAdapter; private SiteViewModel mViewModel; + private boolean loading; private boolean confirm; private Result mResult; private Clock mClock; @@ -155,9 +156,11 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void initConfig() { + if (isLoading()) return; WallConfig.get().init(); LiveConfig.get().init(); ApiConfig.get().init().load(getCallback()); + setLoading(true); } private Callback getCallback() { @@ -201,6 +204,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void setFocus() { + setLoading(false); mBinding.recycler.requestFocus(); App.post(() -> mBinding.title.setFocusable(true), 500); } @@ -279,6 +283,14 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen App.post(() -> confirm = false, 5000); } + public boolean isLoading() { + return loading; + } + + public void setLoading(boolean loading) { + this.loading = loading; + } + @Override public void onItemClick(Func item) { switch (item.getResId()) { @@ -339,6 +351,11 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen SiteDialog.create(this).show(); } + @Override + public void onRefresh() { + initConfig(); + } + @Override public void setSite(Site item) { ApiConfig.get().setHome(item); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java index 9f1f3d01e..293a10f42 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Site; @@ -23,6 +24,7 @@ public class CustomTitleView extends AppCompatTextView { private Listener listener; private Animation flicker; + private boolean coolDown; public CustomTitleView(@NonNull Context context) { super(context); @@ -39,13 +41,15 @@ public class CustomTitleView extends AppCompatTextView { } private boolean hasEvent(KeyEvent event) { - return KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event); + return KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); + App.post(() -> coolDown = false, 500); if (focused) startAnimation(flicker); + if (focused) coolDown = true; else clearAnimation(); } @@ -63,10 +67,18 @@ public class CustomTitleView extends AppCompatTextView { listener.setSite(getSite(true)); } else if (event.getAction() == KeyEvent.ACTION_DOWN && KeyUtil.isRightKey(event)) { listener.setSite(getSite(false)); + } else if (event.getAction() == KeyEvent.ACTION_UP && KeyUtil.isUpKey(event)) { + onKeyUp(); } return true; } + private void onKeyUp() { + App.post(() -> coolDown = false, 3000); + listener.onRefresh(); + coolDown = true; + } + private Site getSite(boolean next) { List items = ApiConfig.get().getSites(); int position = ApiConfig.getHomeIndex(); @@ -78,5 +90,7 @@ public class CustomTitleView extends AppCompatTextView { public interface Listener extends SiteCallback { void showDialog(); + + void onRefresh(); } }