From 70f0e59d66eef6af23cada5cb96b7da286bb4e9c Mon Sep 17 00:00:00 2001 From: Matthieu <24-artectrex@users.noreply.shinice.net> Date: Tue, 9 Feb 2021 23:28:08 +0100 Subject: [PATCH] add blurhash to discover --- .../h/pixeldroid/posts/StatusViewHolder.kt | 19 ++++++++++++++++--- .../searchDiscover/SearchDiscoverFragment.kt | 2 +- .../com/h/pixeldroid/utils/BlurHashDecoder.kt | 6 +++--- .../com/h/pixeldroid/utils/ImageConverter.kt | 6 ++++-- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt b/app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt index 953d4675..873202c0 100644 --- a/app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt +++ b/app/src/main/java/com/h/pixeldroid/posts/StatusViewHolder.kt @@ -152,7 +152,15 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold if(status?.media_attachments?.size == 1) { request.placeholder( - BlurHashDecoder.blurHashBitmap(binding.root.context.resources, status?.media_attachments?.get(0)) + status?.media_attachments?.get(0).let { + it?.blurhash?.let { hash -> + BlurHashDecoder.blurHashBitmap(binding.root.resources, + hash, + it.meta?.original?.width, + it.meta?.original?.height + ) + } + } ).load(status?.getPostUrl()).into(binding.postPicture) val imgDescription = status?.media_attachments?.get(0)?.description.orEmpty().ifEmpty { binding.root.context.getString( R.string.no_description) } @@ -702,8 +710,13 @@ class AlbumViewPagerAdapter(private val media_attachments: List) : override fun onBindViewHolder(holder: ViewHolder, position: Int) { Glide.with(holder.binding.root) .asDrawable().fitCenter().placeholder( - BlurHashDecoder.blurHashBitmap( - holder.binding.root.context.resources, media_attachments[position]) + media_attachments[position].blurhash?.let { + BlurHashDecoder.blurHashBitmap( + holder.binding.root.resources, + it, + media_attachments[position].meta?.original?.width, + media_attachments[position].meta?.original?.height) + } ) .load(media_attachments[position].url).into(holder.image) diff --git a/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt b/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt index 25f098df..966e9846 100644 --- a/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt +++ b/app/src/main/java/com/h/pixeldroid/searchDiscover/SearchDiscoverFragment.kt @@ -135,7 +135,7 @@ class SearchDiscoverFragment : BaseFragment() { } else { holder.albumIcon.visibility = View.GONE } - ImageConverter.setSquareImageFromURL(holder.postView, post.media_attachments?.firstOrNull()?.preview_url, holder.postPreview) + ImageConverter.setSquareImageFromURL(holder.postView, post.media_attachments?.firstOrNull()?.preview_url, holder.postPreview, post.media_attachments?.firstOrNull()?.blurhash) holder.postPreview.setOnClickListener { val intent = Intent(holder.postView.context, PostActivity::class.java) intent.putExtra(Status.POST_TAG, post) diff --git a/app/src/main/java/com/h/pixeldroid/utils/BlurHashDecoder.kt b/app/src/main/java/com/h/pixeldroid/utils/BlurHashDecoder.kt index c624f5ba..847edc45 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/BlurHashDecoder.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/BlurHashDecoder.kt @@ -19,12 +19,12 @@ import kotlin.math.withSign object BlurHashDecoder { - fun blurHashBitmap(resources: Resources, attachment: Attachment?): BitmapDrawable { - val ratioOr0 = (attachment?.meta?.original?.width?.toFloat() ?: 1f) / (attachment?.meta?.original?.height?.toFloat() ?: 1f) + fun blurHashBitmap(resources: Resources, blurHash: String, width: Int?, height: Int?): BitmapDrawable { + val ratioOr0 = (width?.toFloat() ?: 1f) / (height?.toFloat() ?: 1f) val ratio = if (ratioOr0 == 0f) 1f else ratioOr0 return BitmapDrawable(resources, - decode(attachment?.blurhash, + decode(blurHash, (32f * ratio).toInt().coerceAtLeast(32), (32f / ratio).toInt().coerceAtLeast(32)) ) diff --git a/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt b/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt index 9e80fde7..305e4196 100644 --- a/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt +++ b/app/src/main/java/com/h/pixeldroid/utils/ImageConverter.kt @@ -69,8 +69,10 @@ class ImageConverter { * @param url, the url of the image that will be loaded * @param image, the imageView into which we will load the image */ - fun setSquareImageFromURL(view : View, url : String?, image : ImageView) { - Glide.with(view).load(url).apply(RequestOptions().centerCrop()).into(image) + fun setSquareImageFromURL(view : View, url : String?, image : ImageView, blurhash: String? = null) { + Glide.with(view).load(url).placeholder( + blurhash?.let { BlurHashDecoder.blurHashBitmap(view.resources, it, 32,32) } + ).apply(RequestOptions().centerCrop()).into(image) }