diff --git a/app/src/main/java/com/fongmi/bear/bean/Vod.java b/app/src/main/java/com/fongmi/bear/bean/Vod.java index 5ddd5ca60..9cbac442f 100644 --- a/app/src/main/java/com/fongmi/bear/bean/Vod.java +++ b/app/src/main/java/com/fongmi/bear/bean/Vod.java @@ -9,8 +9,8 @@ import androidx.annotation.NonNull; import com.amulyakhare.textdrawable.TextDrawable; import com.amulyakhare.textdrawable.util.ColorGenerator; import com.fongmi.bear.R; +import com.fongmi.bear.utils.ImgUtil; import com.fongmi.bear.utils.ResUtil; -import com.fongmi.bear.utils.Utils; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; @@ -142,7 +142,7 @@ public class Vod { String text = getVodName().isEmpty() ? "" : getVodName().substring(0, 1); view.setImageDrawable(TextDrawable.builder().buildRect(text, ColorGenerator.MATERIAL.getColor(text))); } else { - Utils.loadImage(getVodPic(), view); + ImgUtil.load(getVodPic(), view); } } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java index a2ef8a73c..6df21f7aa 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java @@ -21,6 +21,7 @@ import androidx.leanback.widget.ItemBridgeAdapter; import androidx.viewbinding.ViewBinding; import com.fongmi.bear.ApiConfig; +import com.fongmi.bear.R; import com.fongmi.bear.bean.Site; import com.fongmi.bear.databinding.ActivitySettingBinding; import com.fongmi.bear.databinding.DialogConfigBinding; @@ -49,14 +50,16 @@ public class SettingActivity extends BaseActivity { @Override protected void initView() { - mBinding.home.setText(ApiConfig.get().getHome().getName()); mBinding.url.setText(Prefers.getUrl()); + mBinding.home.setText(ApiConfig.get().getHome().getName()); + mBinding.compress.setText(ResUtil.getStringArray(R.array.select_thumbnail)[Prefers.getThumbnail()]); } @Override protected void initEvent() { - mBinding.config.setOnClickListener(this::showConfig); mBinding.site.setOnClickListener(this::showSite); + mBinding.config.setOnClickListener(this::showConfig); + mBinding.thumbnail.setOnClickListener(this::setThumbnail); } private void showConfig(View view) { @@ -127,4 +130,12 @@ public class SettingActivity extends BaseActivity { setResult(RESULT_OK); Notify.dismiss(); } + + public void setThumbnail(View view) { + CharSequence[] array = ResUtil.getStringArray(R.array.select_thumbnail); + int index = Prefers.getThumbnail(); + index = index == 2 ? 0 : ++index; + mBinding.compress.setText(array[index]); + Prefers.putThumbnail(index); + } } diff --git a/app/src/main/java/com/fongmi/bear/utils/ImgUtil.java b/app/src/main/java/com/fongmi/bear/utils/ImgUtil.java new file mode 100644 index 000000000..8d37b8438 --- /dev/null +++ b/app/src/main/java/com/fongmi/bear/utils/ImgUtil.java @@ -0,0 +1,39 @@ +package com.fongmi.bear.utils; + +import android.graphics.drawable.Drawable; +import android.widget.ImageView; + +import androidx.annotation.Nullable; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.signature.ObjectKey; +import com.fongmi.bear.App; +import com.fongmi.bear.R; + +public class ImgUtil { + + public static void load(String url, ImageView view) { + float thumbnail = (float) (1 - Prefers.getThumbnail() * 0.3); + Glide.with(App.get()).load(url).thumbnail(thumbnail).signature(new ObjectKey(url + "_" + thumbnail)).placeholder(R.drawable.ic_img_loading).error(R.drawable.ic_img_error).listener(getListener(view)).into(view); + } + + private static RequestListener getListener(ImageView view) { + return new RequestListener<>() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + view.setScaleType(ImageView.ScaleType.CENTER); + return false; + } + + @Override + public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + view.setScaleType(ImageView.ScaleType.CENTER_CROP); + return false; + } + }; + } +} diff --git a/app/src/main/java/com/fongmi/bear/utils/Prefers.java b/app/src/main/java/com/fongmi/bear/utils/Prefers.java index b4afbc744..c497d7d41 100644 --- a/app/src/main/java/com/fongmi/bear/utils/Prefers.java +++ b/app/src/main/java/com/fongmi/bear/utils/Prefers.java @@ -12,16 +12,20 @@ public class Prefers { return PreferenceManager.getDefaultSharedPreferences(App.get()); } + public static String getString(String key, String defaultValue) { + return getPrefers().getString(key, defaultValue); + } + public static String getString(String key) { return getString(key, ""); } - public static String getString(String key, String defaultValue) { - return getPrefers().getString(key, defaultValue); + public static int getInt(String key, int defaultValue) { + return getPrefers().getInt(key, defaultValue); } public static int getInt(String key) { - return getPrefers().getInt(key, 0); + return getInt(key, 0); } public static void put(String key, Object obj) { @@ -62,4 +66,12 @@ public class Prefers { public static void putScale(int scale) { Prefers.put("scale", scale); } + + public static int getThumbnail() { + return Prefers.getInt("thumbnail", 1); + } + + public static void putThumbnail(int thumbnail) { + Prefers.put("thumbnail", thumbnail); + } } diff --git a/app/src/main/java/com/fongmi/bear/utils/Utils.java b/app/src/main/java/com/fongmi/bear/utils/Utils.java index 2d57747bd..58ede3381 100644 --- a/app/src/main/java/com/fongmi/bear/utils/Utils.java +++ b/app/src/main/java/com/fongmi/bear/utils/Utils.java @@ -7,11 +7,8 @@ import android.os.Build; import android.provider.Settings; import android.util.Rational; import android.view.View; -import android.widget.ImageView; -import com.bumptech.glide.Glide; import com.fongmi.bear.App; -import com.fongmi.bear.R; import com.google.android.exoplayer2.util.Util; import java.util.regex.Pattern; @@ -20,10 +17,6 @@ public class Utils { private static final Pattern snifferMatch = Pattern.compile("http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); - public static void loadImage(T model, ImageView view) { - Glide.with(App.get()).load(model).placeholder(R.drawable.ic_img_loading).error(R.drawable.ic_img_error).into(view); - } - public static boolean hasPIP() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && App.get().getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE); } diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 2fa4bb5f5..ded28f1a9 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -64,4 +64,32 @@ tools:text="https://" /> + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_vod.xml b/app/src/main/res/layout/adapter_vod.xml index e0de2b895..326aadb0d 100644 --- a/app/src/main/res/layout/adapter_vod.xml +++ b/app/src/main/res/layout/adapter_vod.xml @@ -12,7 +12,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="center" - tools:src="@drawable/ic_vod" /> + tools:src="@drawable/ic_img_loading" /> 首页 配置 历史纪录 + 缩图 确定 @@ -51,6 +52,12 @@ 已经是第一集了! 无法解析网址 + + 高质量 + 中质量 + 低质量 + + 预设 宽度 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index e8165141d..8295439f7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -38,6 +38,7 @@ 首頁 配置 歷史紀錄 + 縮圖 確定 @@ -51,6 +52,12 @@ 已經是第一集了! 無法解析網址 + + 高品質 + 中品質 + 低品質 + + 預設 寬度 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7a288e1f9..e8d663efd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,6 +38,7 @@ Home site Configure History + Thumbnail OK @@ -51,6 +52,12 @@ It\'s the first episode! Unable to parse url + + High + Medium + Low + + Default Width