主体是Viewpager和TabLayout的联动。现在改动Viewpager的滑动动画效果。
效果:页面不再有滑动的效果,滑走的页面直接慢慢消失,滑进来的页面直接慢慢显示。
重写transformPage方法如下,加Animation是因为点击Tab的时候跳转太快,没有缓慢消失缓慢出现的效果。
现在从第一页到第五页切换效果正常。但是反过来从第五页到第一页,每次切换,都会先闪现一下要显示的页面,然后才跑慢慢显示的动画。
试过把条件position < 0改成position < 0||position > 0,但是这样正反切换都闪屏了,实在不知道怎么写向右滑动的条件了。
有没有大神帮忙看一下为什么。
public void transformPage(View view, float position) {
int pageWidth = view.getWidth(); //得到view宽
if (flag) {
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left. 出了左边屏幕
view.setAlpha(0);
} else if (position <= 1) { // [-1,1]
if (position < 0) {
//消失的页面
Animation animation = AnimationUtils.loadAnimation(context, R.anim.alpha_out);
view.startAnimation(animation);
view.setTranslationX(-pageWidth * position); //阻止消失页面的滑动
} else {
//出现的页面
Animation animation = AnimationUtils.loadAnimation(context, R.anim.alpha_in);
view.startAnimation(animation);
view.setTranslationX(pageWidth); //直接设置出现的页面到底
view.setTranslationX(-pageWidth * position); //阻止出现页面的滑动
}
// Fade the page relative to its size.
float alphaFactor = Math.max(MIN_ALPHA, 1 - Math.abs(position));
//透明度改变Log
view.setAlpha(alphaFactor);
} else { // (1,+Infinity]
// This page is way off-screen to the right. 出了右边屏幕
view.setAlpha(0);
}
}
}
联动添加动画的代码
mViewPager = (ViewPager) findViewById(R.id.view);
TabPagerAdapter adapter = new TabPagerAdapter(getApplicationContext(),mTitleArray,mList);
ngGuidePageTransformer = new NGGuidePageTransformer();
ngGuidePageTransformer.setCurrentItem(MyCollection.this,0,mList);
mViewPager.setPageTransformer(true,ngGuidePageTransformer);
TranslationInterface tempfrag;
mViewPager.setAdapter(adapter);
mTabLayout = (TabLayout) findViewById(R.id.tab);
mTabLayout.setupWithViewPager(mViewPager);
alpha_out.xml
<?xml version="1.0" encoding="utf-8"?>
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="1000"
android:fillBefore="true">
alpha_in.xml
<?xml version="1.0" encoding="utf-8"?>
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000"
android:fillBefore="true">