首页 > 解决方案 > 动画 ViewPager 的特定页面

问题描述

我使用以下代码来实现ViewPager淡入淡出效果:

//define view pager and set adapter:  
... 
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_startup_preference);
        //we're not using the layout natively, but using Fragment's layout
        //but setContentView is required -> it is accessed by : R.id.startPref_pager


        StartPrefPagerAdapter prefPagerAdapter =
                new StartPrefPagerAdapter(getSupportFragmentManager());

        final ViewPager StartPref_Viewpager = findViewById(R.id.startPref_pager);
        StartPref_Viewpager.setAdapter(prefPagerAdapter);  
...
... 




//set the animation with:  
StartPref_Viewpager.setPageTransformer(false, new ViewPager.PageTransformer() {
            @Override
            public void transformPage(@NonNull View page, float position) {

            DisplayMetrics displayMetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

            page.setScaleX(0.5f);
            page.setScaleY(0.5f);
            page.setAlpha(0f);
            page.setVisibility(View.VISIBLE);

            page.animate().alpha(1f).setDuration(1000);
            page.animate().scaleX(1f).setDuration(500);
            page.animate().scaleY(1f).setDuration(500);

        }
    });  

...

但是,我希望从第二页ViewPager而不是从第一页本身开始应用动画。我怎样才能做到这一点?

标签: androidandroid-studioandroid-viewpager

解决方案


我实际上并没有这样做,但从您的代码看来,在position的基础上应用条件应该是可能的,如下所示。

StartPref_Viewpager.setPageTransformer(false, new ViewPager.PageTransformer() {
            @Override
            public void transformPage(@NonNull View page, float position) {

            //this is the viewpager page position
            if(position!=0)
            {

            DisplayMetrics displayMetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

            page.setScaleX(0.5f);
            page.setScaleY(0.5f);
            page.setAlpha(0f);
            page.setVisibility(View.VISIBLE);

            page.animate().alpha(1f).setDuration(1000);
            page.animate().scaleX(1f).setDuration(500);
            page.animate().scaleY(1f).setDuration(500);

            }
        }
    });  

推荐阅读