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 b21e42dbb..e17cc50dd 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 @@ -82,7 +82,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private ArrayObjectAdapter mAdapter; private HistoryPresenter mPresenter; private SiteViewModel mViewModel; - private boolean loading; private Result mResult; private Clock mClock; @@ -188,11 +187,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void initConfig() { - if (isLoading()) return; WallConfig.get().init(); LiveConfig.get().init().load(); VodConfig.get().init().load(getCallback()); - setLoading(true); } private Callback getCallback() { @@ -204,26 +201,27 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void success() { - mBinding.progressLayout.showContent(); - checkAction(getIntent()); + showContent(); getHistory(); getVideo(); - setFocus(); - setFunc(); setLogo(); } @Override public void error(String msg) { - mBinding.progressLayout.showContent(); - checkAction(getIntent()); Notify.show(msg); - setFocus(); - setFunc(); + showContent(); } }; } + private void showContent() { + mBinding.progressLayout.showContent(); + checkAction(getIntent()); + setFocus(); + setFunc(); + } + private void loadLive(String url) { LiveConfig.load(Config.find(url, 1), new Callback() { @Override @@ -234,7 +232,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void setFocus() { - setLoading(false); mBinding.title.setSelected(true); App.post(() -> mBinding.title.setFocusable(true), 500); if (!mBinding.title.hasFocus()) mBinding.recycler.requestFocus(); @@ -312,14 +309,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen return mAdapter.indexOf(R.string.home_recommend) + 1; } - private boolean isLoading() { - return loading; - } - - private void setLoading(boolean loading) { - this.loading = loading; - } - private void setLogo() { ImgUtil.logo(mBinding.logo); } @@ -481,7 +470,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override protected void onBackInvoked() { if (mBinding.progressLayout.isProgress()) { - mBinding.progressLayout.showContent(); + showContent(); } else if (mPresenter.isDelete()) { setHistoryDelete(false); } else if (mBinding.recycler.getSelectedPosition() != 0) { 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 208220c92..b335169dd 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 @@ -18,8 +18,8 @@ import com.fongmi.android.tv.impl.SiteCallback; import com.fongmi.android.tv.utils.KeyUtil; import com.fongmi.android.tv.utils.ResUtil; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class CustomTitleView extends AppCompatTextView { @@ -27,6 +27,10 @@ public class CustomTitleView extends AppCompatTextView { private Animation flicker; private boolean coolDown; + private Site getHome() { + return VodConfig.get().getHome(); + } + public CustomTitleView(@NonNull Context context) { super(context); } @@ -42,7 +46,7 @@ public class CustomTitleView extends AppCompatTextView { } private boolean hasEvent(KeyEvent event) { - return !getSites().isEmpty() && (KeyUtil.isEnterKey(event) || (KeyUtil.isUpKey(event) && !coolDown)); + return !getHome().isEmpty() && (KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown)); } @Override @@ -60,8 +64,9 @@ public class CustomTitleView extends AppCompatTextView { } private void onKeyDown(KeyEvent event) { - if (KeyUtil.isActionUp(event) && KeyUtil.isEnterKey(event)) listener.showDialog(); - else if (KeyUtil.isActionDown(event) && KeyUtil.isUpKey(event)) onKeyUp(); + if (KeyUtil.isActionDown(event) && KeyUtil.isUpKey(event)) onKeyUp(); + else if (KeyUtil.isActionDown(event) && KeyUtil.isLeftKey(event)) listener.setSite(getSite(false)); + else if (KeyUtil.isActionDown(event) && KeyUtil.isRightKey(event)) listener.setSite(getSite(true)); } private void onKeyUp() { @@ -70,10 +75,18 @@ public class CustomTitleView extends AppCompatTextView { coolDown = true; } + private Site getSite(boolean next) { + List items = getSites(); + if (items.isEmpty()) return new Site(); + int position = items.indexOf(getHome()); + if (position < 0) position = 0; + if (next) position = (position + 1) % items.size(); + else position = (position - 1 + items.size()) % items.size(); + return items.get(position); + } + private List getSites() { - List items = new ArrayList<>(); - for (Site site : VodConfig.get().getSites()) if (!site.isHide()) items.add(site); - return items; + return VodConfig.get().getSites().stream().filter(site -> !site.isHide()).collect(Collectors.toList()); } public interface Listener extends SiteCallback {