diff options
Diffstat (limited to 'mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt')
-rw-r--r-- | mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt | 79 |
1 files changed, 41 insertions, 38 deletions
diff --git a/mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt b/mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt index e430dff..77ac04c 100644 --- a/mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt +++ b/mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt @@ -18,20 +18,19 @@ package ca.allanwang.kau.mediapicker import android.content.Context import android.graphics.Color import android.util.AttributeSet +import android.view.LayoutInflater import android.view.View import android.widget.FrameLayout import android.widget.ImageView +import ca.allanwang.kau.mediapicker.databinding.KauBlurredImageviewBinding import ca.allanwang.kau.ui.views.MeasureSpecContract import ca.allanwang.kau.ui.views.MeasureSpecDelegate -import ca.allanwang.kau.utils.inflate import ca.allanwang.kau.utils.scaleXY import ca.allanwang.kau.utils.setBackgroundColorRes import ca.allanwang.kau.utils.setIcon import ca.allanwang.kau.utils.visible import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial -import jp.wasabeef.blurry.internal.BlurFactor -import jp.wasabeef.blurry.internal.BlurTask -import kotlinx.android.synthetic.main.kau_blurred_imageview.view.* +import jp.wasabeef.blurry.Blurry /** * Created by Allan Wang on 2017-07-14. @@ -51,12 +50,14 @@ class BlurredImageView @JvmOverloads constructor( var isBlurred = false private set - val imageBase: ImageView get() = image_base + val imageBase: ImageView get() = binding.imageBase + + private val binding: KauBlurredImageviewBinding = + KauBlurredImageviewBinding.inflate(LayoutInflater.from(context), this) init { - inflate(R.layout.kau_blurred_imageview, true) initAttrs(context, attrs) - image_foreground.setIcon(GoogleMaterial.Icon.gmd_check, 30) + binding.imageForeground.setIcon(GoogleMaterial.Icon.gmd_check, 30) } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { @@ -66,9 +67,11 @@ class BlurredImageView @JvmOverloads constructor( override fun clearAnimation() { super.clearAnimation() - imageBase.clearAnimation() - image_blur.clearAnimation() - image_foreground.clearAnimation() + with(binding) { + imageBase.clearAnimation() + imageBlur.clearAnimation() + imageForeground.clearAnimation() + } } private fun View.scaleAnimate(scale: Float) = @@ -84,15 +87,12 @@ class BlurredImageView @JvmOverloads constructor( fun blur() { if (isBlurred) return isBlurred = true - val factor = BlurFactor() - factor.width = width - factor.height = height - BlurTask(imageBase, factor) { - image_blur.setImageDrawable(it) + with(binding) { + Blurry.with(imageBase.context).capture(imageBase).into(imageBlur) scaleAnimate(ANIMATION_SCALE).start() - image_blur.alphaAnimate(1f).start() - image_foreground.alphaAnimate(1f).start() - }.execute() + imageBlur.alphaAnimate(1f).start() + imageForeground.alphaAnimate(1f).start() + } } /** @@ -103,15 +103,12 @@ class BlurredImageView @JvmOverloads constructor( fun blurInstantly() { isBlurred = true clearAnimation() - val factor = BlurFactor() - factor.width = width - factor.height = height - BlurTask(imageBase, factor) { drawable -> - image_blur.setImageDrawable(drawable) + with(binding) { + Blurry.with(imageBase.context).capture(imageBase).into(imageBlur) scaleXY = ANIMATION_SCALE - image_blur.alpha = 1f - image_foreground.alpha = 1f - }.execute() + imageBlur.alpha = 1f + imageForeground.alpha = 1f + } } /** @@ -121,8 +118,10 @@ class BlurredImageView @JvmOverloads constructor( if (!isBlurred) return isBlurred = false scaleAnimate(1.0f).start() - image_blur.alphaAnimate(0f).withEndAction { image_blur.setImageDrawable(null) }.start() - image_foreground.alphaAnimate(0f).start() + with(binding) { + imageBlur.alphaAnimate(0f).withEndAction { imageBlur.setImageDrawable(null) }.start() + imageForeground.alphaAnimate(0f).start() + } } /** @@ -133,9 +132,11 @@ class BlurredImageView @JvmOverloads constructor( clearAnimation() scaleX = 1.0f scaleX = 1.0f - image_blur.alpha = 0f - image_blur.setImageDrawable(null) - image_foreground.alpha = 0f + with(binding) { + imageBlur.alpha = 0f + imageBlur.setImageDrawable(null) + imageForeground.alpha = 0f + } } /** @@ -163,15 +164,17 @@ class BlurredImageView @JvmOverloads constructor( */ fun fullReset() { reset() - fullAction { it.visible().background = null } - image_foreground.setBackgroundColorRes(R.color.kau_blurred_image_selection_overlay) - image_foreground.setIcon(GoogleMaterial.Icon.gmd_check, 30, Color.WHITE) + with(binding) { + fullAction { it.visible().background = null } + imageForeground.setBackgroundColorRes(R.color.kau_blurred_image_selection_overlay) + imageForeground.setIcon(GoogleMaterial.Icon.gmd_check, 30, Color.WHITE) + } } - private fun fullAction(action: (View) -> Unit) { - action(this) + private fun KauBlurredImageviewBinding.fullAction(action: (View) -> Unit) { + action(this@BlurredImageView) action(imageBase) - action(image_blur) - action(image_foreground) + action(imageBlur) + action(imageForeground) } } |