通过重写View Pager的PageTransformer类的transformPage(View view,float position)方法来定制动画

时间:2019-04-22 19:32:34

标签: android animation android-viewpager android-pagetransformer

我希望我的查看传呼机动画都像下面的图片一样,都来自左右两侧。 我有3页。中间一个不动。当我向左或向右移动时,仅左或右页面将在中间屏幕上滚动而几乎不褪色。

我通过覆盖视图传呼器中PageTransformer类的transformPage(View view,float position)方法来制作动画

 private final PageTransformer mPageTransformer2 = new PageTransformer() {
    @Override
    public void transformPage(View view, float position) {
        Log.d("CalViewPager", "transformPage: " + position );

        if (position < 0.0f ) {
            // Pin the left page to the left side.
            view.setTranslationX(getWidth() * -position);
            view.setAlpha(Math.max(1.0f - position, 0.0f));
        } else{
            // Use the default slide transition when moving to the next page.
            view.setTranslationX(0.0f);
            view.setAlpha(1.0f);
        }


    };

以上代码从右侧正常工作,我也尝试在左侧执行。因此,我尝试了解transform(View view,float position)方法的位置值。但我无法弄清楚视图的变化方式?

我发现了什么 如果我在右侧交换,则每个位置值都增加1,在左侧,则其位置将减少1。但是我怎么知道哪个视图具有哪个位置值?

注意:-如果您没有收到我的问题或需要更多说明,请发表评论

1 个答案:

答案 0 :(得分:0)

您必须使用以下代码:

public void transformPage(View page, float position) {
       final float normalizedposition = Math.abs(Math.abs(position) - 1);
       page.setScaleX(normalizedposition / 2 + 0.5f);
       page.setScaleY(normalizedposition / 2 + 0.5f);

}

例如,访问此网站example of cardpager yazdani