Add image size setting

pull/137/head
FongMi 3 years ago
parent a3f34afef1
commit ff75c4bc09
  1. 41
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 36
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  3. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FuncPresenter.java
  4. 9
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java
  5. 41
      app/src/leanback/res/layout/activity_setting.xml
  6. 6
      app/src/main/java/com/fongmi/android/tv/event/RefreshEvent.java
  7. 4
      app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java
  8. 42
      app/src/main/java/com/fongmi/android/tv/utils/Prefers.java
  9. 19
      app/src/main/res/values-zh-rCN/strings.xml
  10. 19
      app/src/main/res/values-zh-rTW/strings.xml
  11. 13
      app/src/main/res/values/strings.xml

@ -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<History> 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;
}
}

@ -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();
}
}

@ -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

@ -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;
}

@ -48,6 +48,7 @@
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:nextFocusDown="@id/render"
android:orientation="horizontal">
<TextView
@ -110,7 +111,7 @@
android:textSize="18sp" />
<TextView
android:id="@+id/type"
android:id="@+id/renderText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
@ -121,9 +122,10 @@
</LinearLayout>
<LinearLayout
android:id="@+id/thumbnail"
android:id="@+id/quality"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:background="@drawable/selector_item"
android:focusable="true"
@ -134,12 +136,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_thumbnail"
android:text="@string/setting_quality"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/compress"
android:id="@+id/qualityText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
@ -148,6 +150,35 @@
tools:text="High" />
</LinearLayout>
<LinearLayout
android:id="@+id/size"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_size"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/sizeText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="Medium" />
</LinearLayout>
</LinearLayout>
<LinearLayout
@ -169,7 +200,7 @@
android:textSize="18sp" />
<TextView
android:id="@+id/versionName"
android:id="@+id/versionText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"

@ -18,6 +18,10 @@ public class RefreshEvent {
EventBus.getDefault().post(new RefreshEvent(Type.HISTORY));
}
public static void size() {
EventBus.getDefault().post(new RefreshEvent(Type.SIZE));
}
private RefreshEvent(Type type) {
this.type = type;
}
@ -27,6 +31,6 @@ public class RefreshEvent {
}
public enum Type {
IMAGE, VIDEO, HISTORY
IMAGE, VIDEO, HISTORY, SIZE
}
}

@ -24,10 +24,10 @@ public class ImgUtil {
}
public static void load(String vodName, String vodPic, ImageView view) {
float thumbnail = 0.3f * Prefers.getThumbnail() + 0.4f;
float quality = 0.3f * Prefers.getQuality() + 0.4f;
view.setScaleType(ImageView.ScaleType.CENTER);
if (TextUtils.isEmpty(vodPic)) onLoadFailed(vodName, view);
else Glide.with(App.get()).asBitmap().load(vodPic).skipMemoryCache(true).sizeMultiplier(thumbnail).signature(new ObjectKey(vodPic + "_" + Prefers.getThumbnail())).placeholder(R.drawable.ic_img_loading).listener(getListener(vodName, view)).into(view);
else Glide.with(App.get()).asBitmap().load(vodPic).skipMemoryCache(true).sizeMultiplier(quality).signature(new ObjectKey(vodPic + "_" + Prefers.getQuality())).placeholder(R.drawable.ic_img_loading).listener(getListener(vodName, view)).into(view);
}
private static RequestListener<Bitmap> getListener(String vodName, ImageView view) {

@ -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);
}
}

@ -42,8 +42,9 @@
<!-- Setting -->
<string name="setting_site">首页</string>
<string name="setting_url">配置</string>
<string name="setting_render">渲染</string>
<string name="setting_thumbnail">缩图</string>
<string name="setting_render">渲染方式</string>
<string name="setting_quality">图片品質</string>
<string name="setting_size">图片尺寸</string>
<string name="setting_version">版本</string>
<!-- Dialog -->
@ -76,10 +77,16 @@
<!-- UNIT -->
<string name="second"><xliff:g name="name">%s</xliff:g></string>
<string-array name="select_thumbnail">
<item>低质量</item>
<item>中质量</item>
<item>高质量</item>
<string-array name="select_quality">
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="select_size">
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="select_scale">

@ -42,8 +42,9 @@
<!-- Setting -->
<string name="setting_site">首頁</string>
<string name="setting_url">配置</string>
<string name="setting_render">渲染</string>
<string name="setting_thumbnail">縮圖</string>
<string name="setting_render">渲染方式</string>
<string name="setting_quality">圖片品質</string>
<string name="setting_size">圖片尺寸</string>
<string name="setting_version">版本</string>
<!-- Dialog -->
@ -76,10 +77,16 @@
<!-- UNIT -->
<string name="second"><xliff:g name="name">%s</xliff:g></string>
<string-array name="select_thumbnail">
<item>低品質</item>
<item>中品質</item>
<item>高品質</item>
<string-array name="select_quality">
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="select_size">
<item></item>
<item></item>
<item></item>
</string-array>
<string-array name="select_scale">

@ -42,8 +42,9 @@
<!-- Setting -->
<string name="setting_site">Home site</string>
<string name="setting_url">Configuration</string>
<string name="setting_render">Render</string>
<string name="setting_thumbnail">Thumbnail</string>
<string name="setting_render">Render type</string>
<string name="setting_quality">Image quality</string>
<string name="setting_size">Image size</string>
<string name="setting_version">Version</string>
<!-- Dialog -->
@ -81,12 +82,18 @@
<item>Texture</item>
</string-array>
<string-array name="select_thumbnail">
<string-array name="select_quality">
<item>Low</item>
<item>Medium</item>
<item>High</item>
</string-array>
<string-array name="select_size">
<item>Small</item>
<item>Medium</item>
<item>Large</item>
</string-array>
<string-array name="select_scale">
<item>Default</item>
<item>Width</item>

Loading…
Cancel
Save