Android:更改" ViewPager"从片段到片段的动画

时间:2016-07-01 11:10:49

标签: java android android-fragments android-viewpager fragmentmanager

我的应用程序包含很少的碎片。我正在使用ViewPager,我期望为ViewPager次交易提供不同的动画。以下是我的代码。

public class MainActivity extends FragmentActivity {

    private ViewPager viewPager;
    private int counterNumber=-1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager=(ViewPager)findViewById(R.id.viewPager);
        viewPager.setAdapter(new MyPagerAdapter2(getSupportFragmentManager()));
        viewPager.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (viewPager.getCurrentItem() == 0) {
                    counterNumber=0;
                    return true;
                }

                if (viewPager.getCurrentItem() == 1) {
                    counterNumber=1;
                    return true;
                }

                if (viewPager.getCurrentItem() == 2) {
                    counterNumber=2;
                    return true;
                }

                if (viewPager.getCurrentItem() == 3) {
                    counterNumber=3;
                    return true;
                }

                if (viewPager.getCurrentItem() == 4) {
                    counterNumber=4;
                    return true;
                }

                return false;
            }
        });

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

                page.setRotation(position*-100);

            }
        });

    }

    private class MyPagerAdapter2 extends FragmentPagerAdapter {


        public MyPagerAdapter2(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int pos) {
            switch(pos) {

                case 0: counterNumber=0; return FirstFragment1.newInstance("FirstFragment_1");
                case 1: counterNumber=1;return SecondFragment1.newInstance("SecondFragment_1");
                case 2: counterNumber=2;return ThirdFragment1.newInstance("ThirdFragment_1");
                case 3: counterNumber=3;return FourthFragment1.newInstance("FourthFragment_1");
                case 4: counterNumber=4;return FifthFragment1.newInstance("FifthFragment_1");
                default: return FirstFragment1.newInstance("DefaultFragment_1");
            }
        }

        @Override
        public int getCount() {
            return 5;
        }
    }

    public void setCurrentItem(int which) {
        if(viewPager != null && which >= 0 && which <= 4) {
            viewPager.setCurrentItem(which);
        }
    }
}

但是,我不需要为所有屏幕制作相同的动画。但是在某些情况下我只想要这个自定义动画,比如当你从第4个屏幕回到第3个屏幕时。或者在第3个屏幕中调用按钮时,指示导航回第1个屏幕。

要做到这一点,我是否可以找到被叫片段(让他们说viewPager.setCurrentItem(4)被调用)并使动画仅用于该片段?

或者更好的是,我有办法单独定义/更改动画吗?就像在第三段片段中那样,去往片段2&#34;按下按钮 - 显示一个动画,在第一个片段中显示&#34;转到片段10&#34;按下,显示一个动画?

无论如何,无论我选择哪种方式,ViewPager都无法删除,因为我已经在我的应用中大量应用了它。

1 个答案:

答案 0 :(得分:0)

希望它能帮到你

   if (position == 1) {
                    viewPager.setPageTransformer(true, new DepthPageTransformer());
                } else {
                    viewPager.setPageTransformer(true, null);
                }

将此代码添加到viewPager onPageChangeListener