diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java index 24bc353d9..0b6e8a40f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/holder/VodListHolder.java @@ -1,7 +1,5 @@ package com.fongmi.android.tv.ui.holder; -import android.widget.ImageView; - import androidx.annotation.NonNull; import com.fongmi.android.tv.bean.Vod; @@ -29,6 +27,6 @@ public class VodListHolder extends BaseVodHolder { binding.remark.setVisibility(item.getRemarkVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image, ImageView.ScaleType.FIT_CENTER, true); + ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image, true); } } diff --git a/app/src/leanback/res/layout/adapter_vod.xml b/app/src/leanback/res/layout/adapter_vod.xml index d6fa52abf..eec1d5ed7 100644 --- a/app/src/leanback/res/layout/adapter_vod.xml +++ b/app/src/leanback/res/layout/adapter_vod.xml @@ -12,9 +12,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black_20" - android:scaleType="center" - app:shapeAppearanceOverlay="@style/Vod.Grid.Large" - tools:src="@drawable/ic_img_loading" /> + app:shapeAppearanceOverlay="@style/Vod.Grid.Large" /> - + app:shapeAppearanceOverlay="@style/Vod.Circle" /> + app:shapeAppearanceOverlay="@style/Vod.Grid.Large" /> getListener(ImageView view) { - return getListener(view, ImageView.ScaleType.CENTER); + return getListener(view, View.VISIBLE); } - private static RequestListener getListener(ImageView view, ImageView.ScaleType scaleType) { + private static RequestListener getListener(ImageView view, int visible) { return new RequestListener<>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target target, boolean isFirstResource) { - view.setImageResource(R.drawable.ic_img_error); - view.setScaleType(scaleType); + if (visible == View.VISIBLE) setError(view); + view.setVisibility(visible); return true; } @Override public boolean onResourceReady(@NonNull Bitmap resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { - view.setScaleType(ImageView.ScaleType.CENTER_CROP); + view.setVisibility(View.VISIBLE); + view.setScaleType(CENTER_CROP); return false; } }; } + + private static void setError(ImageView view) { + int width = view.getWidth(); + int height = view.getHeight(); + if (width <= 0 || height <= 0) return; + int size = Math.min(width, height) / 2; + Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Drawable drawable = ResUtil.getDrawable(R.drawable.ic_img_error); + drawable.setBounds(0, 0, size, size); + drawable.draw(new Canvas(bitmap)); + view.setImageBitmap(bitmap); + view.setScaleType(CENTER); + } } diff --git a/app/src/main/res/drawable-hdpi/ic_img_empty.png b/app/src/main/res/drawable-hdpi/ic_img_empty.png deleted file mode 100644 index f6e474d98..000000000 Binary files a/app/src/main/res/drawable-hdpi/ic_img_empty.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_img_error.png b/app/src/main/res/drawable-hdpi/ic_img_error.png deleted file mode 100644 index dcd7f8b61..000000000 Binary files a/app/src/main/res/drawable-hdpi/ic_img_error.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_img_loading.png b/app/src/main/res/drawable-hdpi/ic_img_loading.png deleted file mode 100644 index e20e1ec18..000000000 Binary files a/app/src/main/res/drawable-hdpi/ic_img_loading.png and /dev/null differ diff --git a/app/src/main/res/drawable-nodpi/ic_logo.png b/app/src/main/res/drawable-nodpi/ic_logo.png index 3a1cbd458..961d18047 100644 Binary files a/app/src/main/res/drawable-nodpi/ic_logo.png and b/app/src/main/res/drawable-nodpi/ic_logo.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_img_empty.png b/app/src/main/res/drawable-xhdpi/ic_img_empty.png deleted file mode 100644 index 2b141f9ca..000000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_img_empty.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_img_error.png b/app/src/main/res/drawable-xhdpi/ic_img_error.png deleted file mode 100644 index b317b1a79..000000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_img_error.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_img_loading.png b/app/src/main/res/drawable-xhdpi/ic_img_loading.png deleted file mode 100644 index 7e3d947d1..000000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_img_loading.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_img_empty.png b/app/src/main/res/drawable-xxhdpi/ic_img_empty.png deleted file mode 100644 index b862ac6b6..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_img_empty.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_img_error.png b/app/src/main/res/drawable-xxhdpi/ic_img_error.png deleted file mode 100644 index cb954a44d..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_img_error.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_img_loading.png b/app/src/main/res/drawable-xxhdpi/ic_img_loading.png deleted file mode 100644 index 079f67365..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_img_loading.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_img_error.xml b/app/src/main/res/drawable/ic_img_error.xml new file mode 100644 index 000000000..34ef9f5be --- /dev/null +++ b/app/src/main/res/drawable/ic_img_error.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java index 27f1df413..a567fdf30 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodListHolder.java @@ -1,7 +1,5 @@ package com.fongmi.android.tv.ui.holder; -import android.widget.ImageView; - import androidx.annotation.NonNull; import com.fongmi.android.tv.bean.Vod; @@ -29,6 +27,6 @@ public class VodListHolder extends BaseVodHolder { binding.remark.setVisibility(item.getRemarkVisible()); binding.getRoot().setOnClickListener(v -> listener.onItemClick(item)); binding.getRoot().setOnLongClickListener(v -> listener.onLongClick(item)); - ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image, ImageView.ScaleType.FIT_CENTER, false); + ImgUtil.load(item.getVodName(), item.getVodPic(), binding.image, false); } } diff --git a/app/src/mobile/res/layout/adapter_vod.xml b/app/src/mobile/res/layout/adapter_vod.xml index 63cbf61bb..7e1334ccc 100644 --- a/app/src/mobile/res/layout/adapter_vod.xml +++ b/app/src/mobile/res/layout/adapter_vod.xml @@ -12,9 +12,7 @@ android:layout_width="150dp" android:layout_height="80dp" android:background="@color/black_20" - android:scaleType="center" - app:shapeAppearanceOverlay="@style/Vod.Grid" - tools:src="@drawable/ic_img_loading" /> + app:shapeAppearanceOverlay="@style/Vod.Grid" /> + app:shapeAppearanceOverlay="@style/Vod.Grid.Large" /> + app:shapeAppearanceOverlay="@style/Vod.Circle" /> + app:shapeAppearanceOverlay="@style/Vod.Grid" /> + app:shapeAppearanceOverlay="@style/Vod.Grid.Large" />