From ff75c4bc0914af64ebb06bfd0495952577154532 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 14 Sep 2022 12:53:30 +0800 Subject: [PATCH] Add image size setting --- .../android/tv/ui/activity/HomeActivity.java | 41 +++++++++++------- .../tv/ui/activity/SettingActivity.java | 36 +++++++++------- .../tv/ui/presenter/FuncPresenter.java | 10 ++--- .../tv/ui/presenter/HistoryPresenter.java | 9 ++-- .../leanback/res/layout/activity_setting.xml | 41 +++++++++++++++--- .../fongmi/android/tv/event/RefreshEvent.java | 6 ++- .../com/fongmi/android/tv/utils/ImgUtil.java | 4 +- .../com/fongmi/android/tv/utils/Prefers.java | 42 +++++++++++-------- app/src/main/res/values-zh-rCN/strings.xml | 19 ++++++--- app/src/main/res/values-zh-rTW/strings.xml | 19 ++++++--- app/src/main/res/values/strings.xml | 13 ++++-- 11 files changed, 161 insertions(+), 79 deletions(-) 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 d8a639340..c12f02498 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 @@ -90,8 +90,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen protected void initEvent() { EventBus.getDefault().register(this); mBinding.title.setListener(this); - mFuncPresenter.setOnClickListener(this); - mHistoryPresenter.setOnClickListener(this); mBinding.recycler.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() { @Override public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) { @@ -109,7 +107,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen selector.addPresenter(ListRow.class, new CustomRowPresenter(16), HistoryPresenter.class); mBinding.recycler.setVerticalSpacing(ResUtil.dp2px(16)); mBinding.recycler.setAdapter(new ItemBridgeAdapter(mAdapter = new ArrayObjectAdapter(selector))); - mHistoryAdapter = new ArrayObjectAdapter(mHistoryPresenter = new HistoryPresenter()); } private void setViewModel() { @@ -124,6 +121,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen mAdapter.add(getFuncRow()); mAdapter.add(R.string.home_history); mAdapter.add(R.string.home_recommend); + mHistoryAdapter = new ArrayObjectAdapter(mHistoryPresenter = new HistoryPresenter(this)); } private void setFocus() { @@ -132,8 +130,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void getVideo() { + int index = getRecommendIndex(); mViewModel.getResult().setValue(Result.empty()); - if (mAdapter.size() > getRecommendIndex()) mAdapter.removeItems(getRecommendIndex(), mAdapter.size() - getRecommendIndex()); + if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index); if (ApiConfig.get().getHome().getName().isEmpty()) mBinding.title.setText(R.string.app_name); else mBinding.title.setText(ApiConfig.getHomeName()); if (ApiConfig.get().getHome().getKey().isEmpty()) return; @@ -150,7 +149,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private ListRow getFuncRow() { - ArrayObjectAdapter adapter = new ArrayObjectAdapter(mFuncPresenter = new FuncPresenter()); + ArrayObjectAdapter adapter = new ArrayObjectAdapter(mFuncPresenter = new FuncPresenter(this)); adapter.add(Func.create(R.string.home_vod)); adapter.add(Func.create(R.string.home_live)); adapter.add(Func.create(R.string.home_search)); @@ -160,12 +159,17 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void getHistory() { + getHistory(false); + } + + private void getHistory(boolean renew) { int historyIndex = getHistoryIndex(); int recommendIndex = getRecommendIndex(); - boolean isExist = recommendIndex - historyIndex == 2; + boolean exist = recommendIndex - historyIndex == 2; List items = History.find(ApiConfig.getCid()); - if (items.isEmpty() && isExist) mAdapter.removeItems(getHistoryIndex(), 1); - if (items.size() > 0 && !isExist) mAdapter.add(historyIndex, new ListRow(mHistoryAdapter)); + if (renew) mHistoryAdapter = new ArrayObjectAdapter(mHistoryPresenter = new HistoryPresenter(this)); + if ((items.isEmpty() && exist) || (renew && exist)) mAdapter.removeItems(historyIndex, 1); + if ((items.size() > 0 && !exist) || (renew && exist)) mAdapter.add(historyIndex, new ListRow(mHistoryAdapter)); mHistoryAdapter.setItems(items, null); } @@ -242,12 +246,21 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshEvent(RefreshEvent event) { - if (event.getType() == RefreshEvent.Type.VIDEO) { - getVideo(); - } else if (event.getType() == RefreshEvent.Type.IMAGE) { - mAdapter.notifyArrayItemRangeChanged(getRecommendIndex(), mAdapter.size() - getRecommendIndex()); - } else if (event.getType() == RefreshEvent.Type.HISTORY) { - getHistory(); + switch (event.getType()) { + case VIDEO: + getVideo(); + break; + case IMAGE: + int index = getRecommendIndex(); + mAdapter.notifyArrayItemRangeChanged(index, mAdapter.size() - index); + break; + case HISTORY: + getHistory(); + break; + case SIZE: + getVideo(); + getHistory(true); + break; } } 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 9f9d71174..339fd8e65 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 @@ -54,9 +54,10 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit protected void initView() { mBinding.url.setText(Prefers.getUrl()); mBinding.home.setText(ApiConfig.getHomeName()); - mBinding.type.setText(ResUtil.getStringArray(R.array.select_render)[Prefers.getRender()]); - mBinding.compress.setText(ResUtil.getStringArray(R.array.select_thumbnail)[Prefers.getThumbnail()]); - mBinding.versionName.setText(BuildConfig.VERSION_NAME); + mBinding.sizeText.setText(ResUtil.getStringArray(R.array.select_size)[Prefers.getSize()]); + mBinding.renderText.setText(ResUtil.getStringArray(R.array.select_render)[Prefers.getRender()]); + mBinding.qualityText.setText(ResUtil.getStringArray(R.array.select_quality)[Prefers.getQuality()]); + mBinding.versionText.setText(BuildConfig.VERSION_NAME); } @Override @@ -64,9 +65,10 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.site.setOnClickListener(view -> SiteDialog.show(this)); mBinding.config.setOnClickListener(view -> ConfigDialog.show(this)); mBinding.history.setOnClickListener(view -> HistoryDialog.show(this)); - mBinding.version.setOnClickListener(view-> Updater.create(this).force().start()); - mBinding.thumbnail.setOnClickListener(this::setThumbnail); + mBinding.version.setOnClickListener(view -> Updater.create(this).force().start()); + mBinding.quality.setOnClickListener(this::setQuality); mBinding.render.setOnClickListener(this::setRender); + mBinding.size.setOnClickListener(this::setSize); } @Override @@ -126,20 +128,26 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit Notify.dismiss(); } - public void setThumbnail(View view) { - CharSequence[] array = ResUtil.getStringArray(R.array.select_thumbnail); - int index = Prefers.getThumbnail(); - index = index == 2 ? 0 : ++index; - Prefers.putThumbnail(index); - mBinding.compress.setText(array[index]); + public void setQuality(View view) { + CharSequence[] array = ResUtil.getStringArray(R.array.select_quality); + int index = Prefers.getQuality(); + Prefers.putQuality(index = index == array.length - 1 ? 0 : ++index); + mBinding.qualityText.setText(array[index]); RefreshEvent.image(); } public void setRender(View view) { CharSequence[] array = ResUtil.getStringArray(R.array.select_render); int index = Prefers.getRender(); - index = index == 1 ? 0 : ++index; - Prefers.putRender(index); - mBinding.type.setText(array[index]); + Prefers.putRender(index = index == array.length - 1 ? 0 : ++index); + mBinding.renderText.setText(array[index]); + } + + public void setSize(View view) { + CharSequence[] array = ResUtil.getStringArray(R.array.select_size); + int index = Prefers.getSize(); + Prefers.putSize(index = index == array.length - 1 ? 0 : ++index); + mBinding.sizeText.setText(array[index]); + RefreshEvent.size(); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FuncPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FuncPresenter.java index 0efa7adc3..fedccc770 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FuncPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FuncPresenter.java @@ -11,14 +11,14 @@ import com.fongmi.android.tv.databinding.AdapterFuncBinding; public class FuncPresenter extends Presenter { - private OnClickListener mListener; + private final OnClickListener mListener; - public interface OnClickListener { - void onItemClick(Func item); + public FuncPresenter(OnClickListener listener) { + this.mListener = listener; } - public void setOnClickListener(OnClickListener listener) { - this.mListener = listener; + public interface OnClickListener { + void onItemClick(Func item); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java index 79addb93d..1914a7ba7 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java @@ -17,11 +17,12 @@ import com.fongmi.android.tv.utils.ResUtil; public class HistoryPresenter extends Presenter { - private OnClickListener mListener; + private final OnClickListener mListener; private int width, height; private boolean delete; - public HistoryPresenter() { + public HistoryPresenter(OnClickListener listener) { + this.mListener = listener; setLayoutSize(); } @@ -34,10 +35,6 @@ public class HistoryPresenter extends Presenter { boolean onLongClick(); } - public void setOnClickListener(OnClickListener listener) { - this.mListener = listener; - } - public boolean isDelete() { return delete; } diff --git a/app/src/leanback/res/layout/activity_setting.xml b/app/src/leanback/res/layout/activity_setting.xml index 6e699306d..dac4588ae 100644 --- a/app/src/leanback/res/layout/activity_setting.xml +++ b/app/src/leanback/res/layout/activity_setting.xml @@ -48,6 +48,7 @@ android:background="@drawable/selector_item" android:focusable="true" android:focusableInTouchMode="true" + android:nextFocusDown="@id/render" android:orientation="horizontal"> + + + + + + + + getListener(String vodName, ImageView view) { 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 5696c954f..35a1a15c2 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 @@ -67,6 +67,30 @@ public class Prefers { put("home", home); } + public static int getRender() { + return getInt("render", 0); + } + + public static void putRender(int render) { + put("render", render); + } + + public static int getQuality() { + return getInt("quality", 1); + } + + public static void putQuality(int quality) { + put("quality", quality); + } + + public static int getSize() { + return getInt("size", 2); + } + + public static void putSize(int size) { + put("size", size); + } + public static String getParse() { return getString("parse"); } @@ -91,22 +115,6 @@ public class Prefers { put("scale", scale); } - public static int getThumbnail() { - return getInt("thumbnail", 1); - } - - public static void putThumbnail(int thumbnail) { - put("thumbnail", thumbnail); - } - - public static int getRender() { - return getInt("render", 0); - } - - public static void putRender(int render) { - put("render", render); - } - public static int getInterval() { return getInt("interval", 15); } @@ -124,6 +132,6 @@ public class Prefers { } public static int getColumn() { - return getInt("column", 6); + return Math.abs(getSize() - 7); } } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index dea46ef31..eb3afabf3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -42,8 +42,9 @@ 首页 配置 - 渲染 - 缩图 + 渲染方式 + 图片品質 + 图片尺寸 版本 @@ -76,10 +77,16 @@ %s - - 低质量 - 中质量 - 高质量 + + + + + + + + + + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index cd5886e97..cee6a7af5 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -42,8 +42,9 @@ 首頁 配置 - 渲染 - 縮圖 + 渲染方式 + 圖片品質 + 圖片尺寸 版本 @@ -76,10 +77,16 @@ %s - - 低品質 - 中品質 - 高品質 + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5303ea962..faf7aefa0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,8 +42,9 @@ Home site Configuration - Render - Thumbnail + Render type + Image quality + Image size Version @@ -81,12 +82,18 @@ Texture - + Low Medium High + + Small + Medium + Large + + Default Width