zhpanvip / BannerViewPager

🚀 An awesome banner view for Android,Based on ViewPager2. 这可能是全网最好用的ViewPager轮播图。简单、高效,一行代码实现循环轮播,一屏三页任意变,指示器样式任你挑。
Apache License 2.0
3.59k stars 436 forks source link

Compse 封装版本有没有考虑呢? #290

Closed owant closed 1 year ago

owant commented 1 year ago

最近用了compose发现不会轮播,挺奇怪的。

owant commented 1 year ago

@Composable
fun BannerItem(discoverViewModel: DiscoverViewModel? = null) {
    val bannerDataSource =
        ObserveAsStateNotNull<List<BannerBean>>(liveData = discoverViewModel?.bannerDataSource, initial = mutableListOf<BannerBean>())
    val showBanner = ObserveAsStateNotNull<Boolean>(liveData = discoverViewModel?.showBanner, initial = false)
    val lifecycleOwner = LocalLifecycleOwner.current
    if (showBanner.value) {
        AndroidView<BannerViewPager<BannerBean>>(
            factory = { ctx ->
                BannerViewPager<BannerBean>(ctx).apply {
                    layoutParams = LinearLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
                    setLifecycleRegistry(lifecycleOwner.lifecycle)
                    setOffScreenPageLimit(3)
                    setCanLoop(true)
                    setInterval(5000)
                    setIndicatorHeight(SizeUtils.dp2px(3F))
                    setIndicatorSliderColor(
                        getColor(ctx, R.color.color_05ffffff),
                        getColor(ctx, R.color.colorAccent)
                    )
                    setIndicatorSliderGap(SizeUtils.dp2px(4F))
                    setIndicatorStyle(IndicatorStyle.ROUND_RECT)
                    setIndicatorMargin(0, 0, 0, SizeUtils.dp2px(16F))
                    adapter = BannerAdapter(ctx, BannerBean.TYPE_DISCOVER)
                    setBackgroundColor(getColor(ctx, R.color.white))
                    create()
                }
            },
            modifier = Modifier
                .fillMaxWidth()
                .aspectRatio(343.0F / 170.0F, false)
                .background(ColorWhite),
            update = {
                it.refreshData(bannerDataSource.value)
            }
        )
    }
}
zhpanvip commented 1 year ago

没有封装Compse 的计划,没有在Compse 中测试过BVP,你可以自己排查一下原因。

owant commented 1 year ago

好的