Closed owant closed 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)
}
)
}
}
没有封装Compse 的计划,没有在Compse 中测试过BVP,你可以自己排查一下原因。
好的
最近用了compose发现不会轮播,挺奇怪的。