Я хочу показать некоторые элементы в Viewpger2, которые будут автоматически сдвигаться через некоторое время. В моем случае это 5 se c. Я реализую эту штуку с помощью Viewpager2 и Rx java. Все в порядке. Он отлично скользит. Но проблема, с которой я столкнулся, заключается в том, что автоматическое скольжение происходит так быстро, как грохот. Кажется, что-то работает так быстро, UX кажется довольно плохим.
Есть ли какое-нибудь решение для уменьшения или изменения скорости скольжения Viewpager2, чтобы улучшить UX fr.
Вот мой код
my_fragment.xml
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/testimonial_view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/_15sdp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
MyFragment.kt
override fun initWidget() {
val compositePagerTransformer = CompositePageTransformer()
with(compositePagerTransformer) {
addTransformer(MarginPageTransformer(15))
addTransformer { page, position ->
val r = 1 - abs(position)
page.scaleY = ((0.85f + r * 0.15).toFloat())
}
}
with(testimonial_view_pager) {
clipToPadding = false
clipChildren = false
offscreenPageLimit = 3
getChildAt(0).overScrollMode = OVER_SCROLL_NEVER
adapter = myAdapter
setPageTransformer(compositePagerTransformer)
}
}
override fun observeLiveData() {
this.observe(viewModel.items) {
testimonialAdapter.submitList(it)
startAutoSliding()
}
}
private fun startAutoSliding() {
compositeDisposable += Observable.interval(5000, MILLISECONDS)
.observeOn(mainThread())
.subscribe {
if (testimonial_view_pager.currentItem < testimonialAdapter.itemCount - 1) {
testimonial_view_pager.currentItem = testimonial_view_pager.currentItem + 1
} else {
testimonial_view_pager.currentItem = 0
}
}
}