/
AssetsGalleryActivity.kt
85 lines (70 loc) · 3.19 KB
/
AssetsGalleryActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.videffects.sample.view
import android.app.Activity
import android.content.Intent
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ItemDecoration
import com.sherazkhilji.sample.databinding.ActivityGalleryBinding
import com.videffects.sample.model.AssetsGalleryModel
import com.videffects.sample.model.screenHeight
import com.videffects.sample.model.screenWidth
import com.videffects.sample.model.toPx
class AssetsGalleryActivity : AppCompatActivity() {
private lateinit var binding: ActivityGalleryBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityGalleryBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.recyclerView.layoutManager = GridLayoutManager(this, SPAN_COUNT)
binding.recyclerView.adapter = PreviewAdapter(AssetsGalleryModel(this))
binding.recyclerView.addItemDecoration(SpacesItemDecoration())
binding.buttonSamplePlayer.setOnClickListener {
startActivity(Intent(this, SamplePlayerActivity::class.java))
}
}
private class PreviewAdapter(private val model: AssetsGalleryModel) : RecyclerView.Adapter<PreviewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PreviewHolder {
val activity = parent.context as Activity
val imageView = ImageView(activity)
val width = activity.screenWidth() / 2
val height = activity.screenHeight() / 3
imageView.layoutParams = ViewGroup.LayoutParams(width, height)
imageView.scaleType = ImageView.ScaleType.CENTER_CROP
return PreviewHolder(imageView)
}
override fun onBindViewHolder(holder: PreviewHolder, position: Int) {
holder.setThumbnail(model.getThumbnail(position))
holder.itemView.setOnClickListener { v -> VideoActivity.startActivity(v.context, model.getAssetName(position)) }
}
override fun getItemCount(): Int {
return model.count
}
}
private class PreviewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun setThumbnail(thumbnail: Drawable?) {
(itemView as ImageView).setImageDrawable(thumbnail)
}
}
private class SpacesItemDecoration : ItemDecoration() {
private val space = 4.toPx()
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
val position = parent.getChildAdapterPosition(view)
val column: Int = position % SPAN_COUNT
outRect.left = column * space / SPAN_COUNT
outRect.right = space - (column + 1) * space / SPAN_COUNT
if (position >= SPAN_COUNT) {
outRect.top = space
}
}
}
companion object {
private const val SPAN_COUNT = 2
}
}