You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Android View Pager动画实现求助

实现目标页面切换动画的PageTransformer方案

根据你提供的动画效果,这里给出一个自定义的PageTransformer实现,通过缩放、透明度和位移组合来匹配需求:

自定义Transformer代码(Kotlin)

class ScaleFadeSlideTransformer : ViewPager2.PageTransformer {
    // 可调整的动画参数
    private val minScale = 0.85f    // 页面最小缩放比例
    private val minAlpha = 0.0f     // 页面最小透明度
    private val translateXFactor = 0.1f // 页面横向位移比例

    override fun transformPage(page: View, position: Float) {
        page.run {
            val pageWidth = width
            when {
                // 页面完全处于屏幕左侧外
                position < -1 -> {
                    alpha = minAlpha
                    scaleX = minScale
                    scaleY = minScale
                    translationX = -pageWidth * translateXFactor
                }
                // 当前页面向左滑动(position从0到-1)
                position <= 0 -> {
                    alpha = 1 + position
                    val scale = minScale + (1 - minScale) * (1 - Math.abs(position))
                    scaleX = scale
                    scaleY = scale
                    translationX = pageWidth * translateXFactor * position
                }
                // 右侧页面滑入屏幕(position从1到0)
                position <= 1 -> {
                    alpha = 1 - position
                    val scale = minScale + (1 - minScale) * (1 - position)
                    scaleX = scale
                    scaleY = scale
                    translationX = pageWidth * translateXFactor * position
                }
                // 页面完全处于屏幕右侧外
                else -> {
                    alpha = minAlpha
                    scaleX = minScale
                    scaleY = minScale
                    translationX = pageWidth * translateXFactor
                }
            }
        }
    }
}

使用方式

将这个Transformer设置给你的ViewPager2:

viewPager2.setPageTransformer(ScaleFadeSlideTransformer())

如果使用的是旧版ViewPager,只需把实现接口换成androidx.viewpager.widget.PageTransformer,逻辑完全一致。

参数调整说明

  • 修改minScale可以调整页面的最小缩放程度,数值越小页面缩得越厉害
  • 修改minAlpha可以调整页面滑出时的透明度下限,设为0就是完全透明
  • 修改translateXFactor可以调整页面横向位移的幅度,数值越大位移越明显

你可以根据演示动画的细节微调这些参数,直到效果完全匹配。

内容的提问来源于stack exchange,提问作者Prashant Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:29:54