Michal Klimczak
06/11/2021, 9:41 AMMichal Klimczak
06/11/2021, 9:43 AMclass MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent { PagerPerformanceExample() }
}
}
@OptIn(ExperimentalPagerApi::class)
@Composable
fun PagerPerformanceExample(){
val pages = 50
val viewsOnPage = 50
Column(modifier = Modifier.fillMaxSize()) {
HorizontalPager(
state = rememberPagerState(pageCount = pages),
modifier = Modifier.fillMaxWidth().weight(1f).background(color = Color(0xFFEEEEFF))
) { pageNo ->
Column(
modifier = Modifier.fillMaxSize()
) {
repeat(viewsOnPage) { Text("\uD83E\uDD16") }
}
}
AndroidView(
modifier = Modifier.fillMaxWidth().weight(1f).background(color = Color(0xFFFFEEEE)),
factory = { context ->
ViewPager(context).apply {
val matchParentParams = LayoutParams(MATCH_PARENT, MATCH_PARENT)
layoutParams = matchParentParams
adapter = object : PagerAdapter () {
override fun getCount() = pages
override fun isViewFromObject(view: View, obj: Any): Boolean {
return view == obj
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val pageLayout = LinearLayout(context).apply {
orientation = LinearLayout.VERTICAL
layoutParams = matchParentParams
gravity = Gravity.CENTER_HORIZONTAL
}
repeat(viewsOnPage) {
pageLayout.addView(TextView(context).apply { text = "\uD83E\uDD16" })
}
container.addView(pageLayout)
return pageLayout
}
override fun destroyItem(
container: ViewGroup,
position: Int,
view: Any
) {
container.removeView(view as View)
}
}
}
}
)
}
}
Michal Klimczak
06/11/2021, 9:45 AMMichal Klimczak
06/11/2021, 9:47 AMMichal Klimczak
06/11/2021, 9:53 AMMichal Klimczak
06/11/2021, 10:12 AMnitrog42
06/11/2021, 11:55 AMcb
06/11/2021, 12:03 PMMichal Klimczak
06/11/2021, 12:07 PMMichal Klimczak
06/11/2021, 12:11 PMcb
06/11/2021, 12:13 PMMichal Klimczak
06/11/2021, 12:15 PM