From c09a32e9ad33d9918eec2541c45b93df4ba5a982 Mon Sep 17 00:00:00 2001 From: davidoskky Date: Thu, 3 Nov 2022 23:16:48 +0100 Subject: [PATCH] Add checkerboard background to the images in the image view A checkerboard is drawn beneath the image in the imageview to allow a simpler viewing of images with transparency --- .../android/fragments/ImageFragment.kt | 22 ++++++++++++++----- .../src/main/res/layout/fragment_image.xml | 7 +++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ImageFragment.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ImageFragment.kt index 129f883..4398b21 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ImageFragment.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ImageFragment.kt @@ -1,21 +1,23 @@ package bou.amine.apps.readerforselfossv2.android.fragments +import android.graphics.drawable.Drawable +import android.graphics.drawable.LayerDrawable import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import bou.amine.apps.readerforselfossv2.android.R import bou.amine.apps.readerforselfossv2.android.databinding.FragmentImageBinding import com.bumptech.glide.Glide -import com.bumptech.glide.load.engine.DiskCacheStrategy -import com.bumptech.glide.request.RequestOptions +import com.bumptech.glide.request.target.ImageViewTarget class ImageFragment : Fragment() { private lateinit var imageUrl : String - private val glideOptions = RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.ALL) private var _binding: FragmentImageBinding? = null private val binding get() = _binding + private lateinit var layers: LayerDrawable override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -29,10 +31,18 @@ class ImageFragment : Fragment() { binding!!.photoView.visibility = View.VISIBLE Glide.with(activity) - .asBitmap() - .apply(glideOptions) .load(imageUrl) - .into(binding!!.photoView) + .into(object : ImageViewTarget(binding!!.photoView) { + override fun setResource(resource: Drawable?) { + val background = resources.getDrawable(R.drawable.checkerboard, context?.theme) + layers = LayerDrawable(arrayOf(background, resource)) + binding!!.photoView.setImageDrawable(layers) + } + + override fun onLoadCleared(placeholder: Drawable?) { + layers = LayerDrawable(emptyArray()) + } + }) return view } diff --git a/androidApp/src/main/res/layout/fragment_image.xml b/androidApp/src/main/res/layout/fragment_image.xml index cf5200e..d3afc2a 100644 --- a/androidApp/src/main/res/layout/fragment_image.xml +++ b/androidApp/src/main/res/layout/fragment_image.xml @@ -1,5 +1,5 @@ - @@ -9,7 +9,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerVertical="true" - android:layout_centerHorizontal="true" + android:adjustViewBounds="true" + android:background="?attr/colorOnBackground" app:srcCompat="@android:drawable/screen_background_dark" /> - \ No newline at end of file + \ No newline at end of file