Advertisement
Guest User

Untitled

a guest
Jun 18th, 2017
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.24 KB | None | 0 0
  1. package simplegyphy.view
  2.  
  3. import android.content.Context
  4. import android.graphics.Color
  5. import android.graphics.drawable.ColorDrawable
  6. import android.support.v7.widget.RecyclerView
  7. import android.view.View
  8. import android.view.ViewGroup
  9. import android.widget.LinearLayout
  10. import com.bumptech.glide.Glide
  11. import com.bumptech.glide.load.engine.DiskCacheStrategy
  12. import com.bumptech.glide.load.resource.drawable.GlideDrawable
  13. import com.bumptech.glide.request.animation.GlideAnimation
  14. import com.bumptech.glide.request.target.GlideDrawableImageViewTarget
  15. import org.jetbrains.anko.backgroundColor
  16.  
  17.  
  18. class RecyclerViewGifAdapter(val context : Context) : RecyclerView.Adapter<GifTableViewHolder>(){
  19.  
  20.     var records = listOf<Image>()
  21.         set(value) {
  22.             field = value
  23.             notifyItemRangeInserted(0, value.size)
  24.         }
  25.  
  26.     private val itemsMeasures = mutableMapOf<Int, Pair<Int, Int>>()
  27.  
  28.     override fun getItemCount(): Int = records.size - (records.size % 2)
  29.  
  30.     override fun onBindViewHolder(holder: GifTableViewHolder, position: Int) {
  31.         val image = records[position]
  32.         val imageView = holder.image
  33.  
  34.         val placeholder = ColorDrawable(Color.BLUE)
  35.         if (itemsMeasures.containsKey(position)){
  36.             val (height, width) = itemsMeasures[position]!!
  37.             imageView.setDimensions(height, width)
  38.             placeholder.setBounds(0, height, width, 0)
  39.         } else {
  40.             placeholder.setBounds(0, image.height, image.width, 0)
  41.         }
  42.  
  43.  
  44.         Glide.with(context)
  45.                 .load(image.url)
  46. //                .asGif()
  47.                 .diskCacheStrategy(DiskCacheStrategy.ALL)
  48.                 .placeholder(placeholder)
  49.                 .thumbnail(0.1f)
  50.                 .skipMemoryCache( true )
  51.                 .into(object : GlideDrawableImageViewTarget(imageView) {
  52.                     override fun onResourceReady(resource: GlideDrawable, animation: GlideAnimation<in GlideDrawable>?) {
  53.                         itemsMeasures[position] = Pair(resource.intrinsicHeight, resource.intrinsicWidth)
  54.                         super.onResourceReady(resource, animation)
  55. //
  56. //                        imageView.setDimensions(resource.intrinsicHeight, resource.intrinsicWidth)
  57. //                        imageView.setImageDrawable(resource)
  58. //
  59. //                        resource.setLoopCount(-1)
  60. //                        resource.start()
  61.                     }
  62.                 })
  63.     }
  64.  
  65.     override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): GifTableViewHolder? {
  66.         if (parent == null) return null
  67.         val view = createView()
  68.         return GifTableViewHolder(view)
  69.     }
  70.  
  71.     private fun createView(): View {
  72.         val layout = LinearLayout(context)
  73.         layout.orientation = LinearLayout.VERTICAL
  74.         layout.layoutParams = ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
  75.         layout.backgroundColor = Color.RED
  76.  
  77.         val view = DynamicHeightImageView(context)
  78.         view.id = Ids.GifItem
  79.         view.layoutParams = ViewGroup.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
  80.         layout.addView(view)
  81.  
  82.         return layout
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement