300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android ViewPager2自定义页面切换动画

Android ViewPager2自定义页面切换动画

时间:2018-12-16 00:59:54

相关推荐

Android ViewPager2自定义页面切换动画

默认切换动画

MainActivity

override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = DataBindingUtil.setContentView(this,R.layout.activity_main)binding.viewpager2.adapter = ViewPagerAdapter(this)//binding.viewpager2.setPageTransformer(ViewPagerOverlay())}

Adapter

package im.zebra.myviewpager2import androidx.fragment.app.Fragmentimport androidx.fragment.app.FragmentActivityimport androidx.viewpager2.adapter.FragmentStateAdapterclass ViewPagerAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {private val list = arrayOf("微信","通讯录","发现","我的")override fun getItemCount(): Int = list.sizeoverride fun createFragment(position: Int): Fragment =BlankFragment.newInstance(list[position], "")}

自定义动画(缩放)

binding.viewpager2.setPageTransformer(ViewPagerScale())

package im.zebra.myviewpager2import android.view.Viewimport androidx.viewpager2.widget.ViewPager2import kotlin.math.absprivate const val MIN_SCALE = 0.75fclass ViewPagerScale : ViewPager2.PageTransformer {override fun transformPage(view: View, position: Float) {val pageWidth = view.widthwhen {position < -1 -> {// [-Infinity,-1)// This page is way off-screen to the left.view.alpha = 0f}position <= 0 -> {// [-1,0]// Use the default slide transition when moving to the left pageview.alpha = 1Fview.translationX = 0fview.scaleX = 1fview.scaleY = 1f}position <= 1 -> {// (0,1]// Fade the page out.view.alpha = 1 - position// Counteract the default slide transitionview.translationX = pageWidth * -position// Scale the page down (between MIN_SCALE and 1)val scaleFactor: Float = (MIN_SCALE+ (1 - MIN_SCALE) * (1 - abs(position)))view.scaleX = scaleFactorview.scaleY = scaleFactor}else -> {// (1,+Infinity]// This page is way off-screen to the right.view.alpha = 0f}}}}

自定义动画(叠加)

binding.viewpager2.setPageTransformer(ViewPagerOverlay())

package im.zebra.myviewpager2import android.view.Viewimport androidx.viewpager2.widget.ViewPager2import kotlin.math.absprivate const val MIN_SCALE = 1fclass ViewPagerOverlay : ViewPager2.PageTransformer {override fun transformPage(view: View, position: Float) {val pageWidth = view.widthwhen {position < -1 -> {// [-Infinity,-1)// This page is way off-screen to the left.view.alpha = 0f}position <= 0 -> {// [-1,0]// Use the default slide transition when moving to the left pageview.alpha = 1Fview.translationX = 0fview.scaleX = 1fview.scaleY = 1f}position <= 1 -> {// (0,1]// Fade the page out.view.alpha = 1 - position// Counteract the default slide transitionview.translationX = pageWidth * -position// Scale the page down (between MIN_SCALE and 1)val scaleFactor: Float = (MIN_SCALE+ (1 - MIN_SCALE) * (1 - abs(position)))view.scaleX = scaleFactorview.scaleY = scaleFactor}else -> {// (1,+Infinity]// This page is way off-screen to the right.view.alpha = 0f}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。