aboutsummaryrefslogtreecommitdiff
path: root/mediapicker/src/main/kotlin/ca/allanwang/kau/mediapicker/BlurredImageView.kt
diff options
context:
space:
mode:
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.kt79
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)
}
}