Support image thumbnail

pull/21/head
FongMi 4 years ago
parent e1ce3014de
commit af01bf133b
  1. 4
      app/src/main/java/com/fongmi/bear/bean/Vod.java
  2. 15
      app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java
  3. 39
      app/src/main/java/com/fongmi/bear/utils/ImgUtil.java
  4. 18
      app/src/main/java/com/fongmi/bear/utils/Prefers.java
  5. 7
      app/src/main/java/com/fongmi/bear/utils/Utils.java
  6. 28
      app/src/main/res/layout/activity_setting.xml
  7. 2
      app/src/main/res/layout/adapter_vod.xml
  8. 7
      app/src/main/res/values-zh-rCN/strings.xml
  9. 7
      app/src/main/res/values-zh-rTW/strings.xml
  10. 7
      app/src/main/res/values/strings.xml

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

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

@ -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<Drawable> getListener(ImageView view) {
return new RequestListener<>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
view.setScaleType(ImageView.ScaleType.CENTER);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
return false;
}
};
}
}

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

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

@ -64,4 +64,32 @@
tools:text="https://" />
</LinearLayout>
<LinearLayout
android:id="@+id/thumbnail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/setting_thumbnail"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/compress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="High" />
</LinearLayout>
</LinearLayout>

@ -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" />
<TextView
android:id="@+id/remark"

@ -38,6 +38,7 @@
<string name="setting_site">首页</string>
<string name="setting_url">配置</string>
<string name="setting_history">历史纪录</string>
<string name="setting_thumbnail">缩图</string>
<!-- Dialog -->
<string name="dialog_positive">确定</string>
@ -51,6 +52,12 @@
<string name="error_play_prev">已经是第一集了!</string>
<string name="error_play_parse">无法解析网址</string>
<string-array name="select_thumbnail">
<item>高质量</item>
<item>中质量</item>
<item>低质量</item>
</string-array>
<string-array name="select_scale">
<item>预设</item>
<item>宽度</item>

@ -38,6 +38,7 @@
<string name="setting_site">首頁</string>
<string name="setting_url">配置</string>
<string name="setting_history">歷史紀錄</string>
<string name="setting_thumbnail">縮圖</string>
<!-- Dialog -->
<string name="dialog_positive">確定</string>
@ -51,6 +52,12 @@
<string name="error_play_prev">已經是第一集了!</string>
<string name="error_play_parse">無法解析網址</string>
<string-array name="select_thumbnail">
<item>高品質</item>
<item>中品質</item>
<item>低品質</item>
</string-array>
<string-array name="select_scale">
<item>預設</item>
<item>寬度</item>

@ -38,6 +38,7 @@
<string name="setting_site">Home site</string>
<string name="setting_url">Configure</string>
<string name="setting_history">History</string>
<string name="setting_thumbnail">Thumbnail</string>
<!-- Dialog -->
<string name="dialog_positive">OK</string>
@ -51,6 +52,12 @@
<string name="error_play_prev">It\'s the first episode!</string>
<string name="error_play_parse">Unable to parse url</string>
<string-array name="select_thumbnail">
<item>High</item>
<item>Medium</item>
<item>Low</item>
</string-array>
<string-array name="select_scale">
<item>Default</item>
<item>Width</item>

Loading…
Cancel
Save