[英]ViewPager in Fragment called from another Fragment Android
[英]Android: Changing “ViewPager” animation from Fragment to Fragment
我的应用程序片段很少。 我正在使用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屏幕时,我只需要此自定义动画。 否则,当在第三屏幕中调用一个按钮时,指示该按钮导航回到第一屏幕。
为此,我能否找到被调用的片段(比如说viewPager.setCurrentItem(4)
被调用)并使动画仅适用于该片段?
还是更好,我可以单独定义/更改动画吗? 就像在按下“转到片段2”按钮时在第三个片段中显示一个动画一样,在按下“转到片段10”时在第一个片段中显示一个动画?
无论如何,无论选择ViewPager
方式,都无法删除ViewPager
因为我已经在应用程序中大量使用了它。
希望对您有帮助
if (position == 1) {
viewPager.setPageTransformer(true, new DepthPageTransformer());
} else {
viewPager.setPageTransformer(true, null);
}
将此代码添加到viewPager onPageChangeListener
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.