diff options
author | Allan Wang <me@allanwang.ca> | 2017-07-31 23:02:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-31 23:02:01 -0700 |
commit | 48213d0b427c478865c75fee912ff1ae8bbaffb5 (patch) | |
tree | 7aef1d8400fc3403ee5a40aba945f33a95319359 /mediapicker/src/main/kotlin/ca/allanwang/kau/imagepicker/MediaItem.kt | |
parent | 8a4e9fd44dfbcf58aa7ab63167dcbdf8752db7d0 (diff) | |
download | kau-48213d0b427c478865c75fee912ff1ae8bbaffb5.tar.gz kau-48213d0b427c478865c75fee912ff1ae8bbaffb5.tar.bz2 kau-48213d0b427c478865c75fee912ff1ae8bbaffb5.zip |
Major update to core and kotterknife; create mediapicker (#15)
* Readme
* Fix kau direction bits
* Truly support transparent ripples
* Update changelog
* Test rect as base
* Replace fab transition with generic fade scale transition
* Add scalexy func
* Add scaleXY
* Add arguments to fadeScaleTransition
* Clean up ink indicator
* Create setOnSingleTapListener
* Fix lint and add rndColor
* Create kotterknife resettables
* Add readme and missing object
* Create lazy resettable registered
* Update core docs
* Opt for separate class for resettable registry
* Clean up resettable registry
* Rename functions
* Add ripple callback listener
* Adjust kprefactivity desc color
* Add more transitions
* Add delete keys option
* Add instrumentation tests
* switch id
* Revert automatic instrumental tests
* Generify imagepickercore and prepare video alternative
* Create working video picker
* Address possible null issue
* Update searchview
* Make layouts public
* Add changelog test
* Update logo link
* Add custom color gif
Diffstat (limited to 'mediapicker/src/main/kotlin/ca/allanwang/kau/imagepicker/MediaItem.kt')
-rw-r--r-- | mediapicker/src/main/kotlin/ca/allanwang/kau/imagepicker/MediaItem.kt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/mediapicker/src/main/kotlin/ca/allanwang/kau/imagepicker/MediaItem.kt b/mediapicker/src/main/kotlin/ca/allanwang/kau/imagepicker/MediaItem.kt new file mode 100644 index 0000000..4b70638 --- /dev/null +++ b/mediapicker/src/main/kotlin/ca/allanwang/kau/imagepicker/MediaItem.kt @@ -0,0 +1,69 @@ +package ca.allanwang.kau.imagepicker + +import android.graphics.drawable.Drawable +import android.support.v7.widget.RecyclerView +import android.view.View +import ca.allanwang.kau.iitems.KauIItem +import ca.allanwang.kau.utils.bindView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.target.Target +import com.mikepenz.fastadapter.FastAdapter + +/** + * Created by Allan Wang on 2017-07-04. + */ +class MediaItem(val data: MediaModel) + : KauIItem<MediaItem, MediaItem.ViewHolder>(R.layout.kau_iitem_image, { ViewHolder(it) }) { + + private var failedToLoad = false + + companion object { + fun bindEvents(fastAdapter: FastAdapter<MediaItem>) { + 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) + 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.imageBase.setImageDrawable(MediaPickerCore.getErrorDrawable(holder.itemView.context)) + return true; + } + + override fun onResourceReady(resource: Drawable, model: Any, target: Target<Drawable>, dataSource: DataSource, isFirstResource: Boolean): Boolean { + holder.container.imageBase.setImageDrawable(resource) + if (isSelected) holder.container.blurInstantly() + return true; + } + }) + .into(holder.container.imageBase) + } + + override fun unbindView(holder: ViewHolder) { + super.unbindView(holder) + Glide.with(holder.itemView).clear(holder.container.imageBase) + holder.container.removeBlurInstantly() + failedToLoad = false + } + + class ViewHolder(v: View) : RecyclerView.ViewHolder(v) { + val container: BlurredImageView by bindView(R.id.kau_image) + } +}
\ No newline at end of file |