diff options
Diffstat (limited to 'imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt')
-rw-r--r-- | imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt b/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt index 852e1e8..d258822 100644 --- a/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt +++ b/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImageItem.kt @@ -25,33 +25,42 @@ class ImageItem(val data: ImageModel) : KauIItem<ImageItem, ImageItem.ViewHolder>(R.layout.kau_iitem_image, { ViewHolder(it) }) { private var failedToLoad = false + var withFade = true - fun bindEvents(fastAdapter: FastAdapter<ImageItem>) { - fastAdapter.withMultiSelect(true) - fastAdapter.withSelectable(true) - fastAdapter.withOnClickListener { v, _, _, _ -> - val image = v as BlurredImageView - image.toggleBlur() - true + companion object { + fun bindEvents(fastAdapter: FastAdapter<ImageItem>) { + fastAdapter.withMultiSelect(true) + .withSelectable(true) + //adapter selector occurs before the on click event + .withOnClickListener { v, _, item, _ -> + val image = v as BlurredImageView + if (item.isSelected) image.blur() + else image.removeBlur() + true + } } } + override fun isSelectable(): Boolean = !failedToLoad + override fun bindView(holder: ViewHolder, payloads: List<Any>?) { super.bindView(holder, payloads) - holder.container.alpha = 0f + if (withFade) holder.container.alpha = 0f Glide.with(holder.itemView) .load(data.data) .listener(object : RequestListener<Drawable> { override fun onLoadFailed(e: GlideException?, model: Any, target: Target<Drawable>, isFirstResource: Boolean): Boolean { failedToLoad = true; holder.container.setIcon(GoogleMaterial.Icon.gmd_error); - holder.container.animate().alpha(1f).start(); + if (withFade) holder.container.animate().alpha(1f).start(); return true; } override fun onResourceReady(resource: Drawable, model: Any, target: Target<Drawable>, dataSource: DataSource, isFirstResource: Boolean): Boolean { - holder.container.animate().alpha(1f).start(); - return false; + holder.container.imageBase.setImageDrawable(resource) + if (isSelected) holder.container.blurInstantly() + if (withFade) holder.container.animate().alpha(1f).start(); + return true; } }) .into(holder.container.imageBase) @@ -63,14 +72,13 @@ class ImageItem(val data: ImageModel) .sizePx(sizePx) .paddingPx(sizePx / 3) .color(Color.WHITE)) - //todo add background - imageBase.setBackgroundColor(ImagePickerActivityBase.accentColor) + imageBase.setBackgroundColor(ImagePickerActivity.accentColor) imageForeground.gone() } private fun computeViewSize(context: Context): Int { val screenWidthPx = context.resources.displayMetrics.widthPixels - return screenWidthPx / ImagePickerActivityBase.computeColumnCount(context) + return screenWidthPx / ImagePickerActivity.computeColumnCount(context) } override fun unbindView(holder: ViewHolder) { @@ -81,6 +89,7 @@ class ImageItem(val data: ImageModel) } else { holder.container.fullReset() } + failedToLoad = false } class ViewHolder(v: View) : RecyclerView.ViewHolder(v) { |