Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package simplegyphy.view
- import android.content.Context
- import android.graphics.Color
- import android.graphics.drawable.ColorDrawable
- import android.support.v7.widget.RecyclerView
- import android.view.View
- import android.view.ViewGroup
- import android.widget.LinearLayout
- import com.bumptech.glide.Glide
- import com.bumptech.glide.load.engine.DiskCacheStrategy
- import com.bumptech.glide.load.resource.drawable.GlideDrawable
- import com.bumptech.glide.request.animation.GlideAnimation
- import com.bumptech.glide.request.target.GlideDrawableImageViewTarget
- import org.jetbrains.anko.backgroundColor
- class RecyclerViewGifAdapter(val context : Context) : RecyclerView.Adapter<GifTableViewHolder>(){
- var records = listOf<Image>()
- set(value) {
- field = value
- notifyItemRangeInserted(0, value.size)
- }
- private val itemsMeasures = mutableMapOf<Int, Pair<Int, Int>>()
- override fun getItemCount(): Int = records.size - (records.size % 2)
- override fun onBindViewHolder(holder: GifTableViewHolder, position: Int) {
- val image = records[position]
- val imageView = holder.image
- val placeholder = ColorDrawable(Color.BLUE)
- if (itemsMeasures.containsKey(position)){
- val (height, width) = itemsMeasures[position]!!
- imageView.setDimensions(height, width)
- placeholder.setBounds(0, height, width, 0)
- } else {
- placeholder.setBounds(0, image.height, image.width, 0)
- }
- Glide.with(context)
- .load(image.url)
- // .asGif()
- .diskCacheStrategy(DiskCacheStrategy.ALL)
- .placeholder(placeholder)
- .thumbnail(0.1f)
- .skipMemoryCache( true )
- .into(object : GlideDrawableImageViewTarget(imageView) {
- override fun onResourceReady(resource: GlideDrawable, animation: GlideAnimation<in GlideDrawable>?) {
- itemsMeasures[position] = Pair(resource.intrinsicHeight, resource.intrinsicWidth)
- super.onResourceReady(resource, animation)
- //
- // imageView.setDimensions(resource.intrinsicHeight, resource.intrinsicWidth)
- // imageView.setImageDrawable(resource)
- //
- // resource.setLoopCount(-1)
- // resource.start()
- }
- })
- }
- override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): GifTableViewHolder? {
- if (parent == null) return null
- val view = createView()
- return GifTableViewHolder(view)
- }
- private fun createView(): View {
- val layout = LinearLayout(context)
- layout.orientation = LinearLayout.VERTICAL
- layout.layoutParams = ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
- layout.backgroundColor = Color.RED
- val view = DynamicHeightImageView(context)
- view.id = Ids.GifItem
- view.layoutParams = ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
- layout.addView(view)
- return layout
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement