Android ViewPager手动调用PageTransformer transformPage
我有一个带有PageTransformer实现的ViewPager,它在ViewPager的下一页上做了一些有趣的事情。我的实现如下所示:Android ViewPager手动调用PageTransformer transformPage,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个带有PageTransformer实现的ViewPager,它在ViewPager的下一页上做了一些有趣的事情。我的实现如下所示: class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; @Override public voi
class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
} else if (position < 1) { // (0,1]
do some funky stuff to the page currently being scrolled into the main view on scrolling left
} else if (position==1) {
do some funky stuff to the next page
}
else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(1);
}
}
类ZoomoutPagetTransformer实现ViewPager.PageTransformer{
专用静态最终浮动最小刻度=0.85f;
专用静态最终浮动最小值α=0.5f;
@凌驾
公共页面(视图、浮动位置){
int pageWidth=view.getWidth();
if(位置<-1){/[-无穷大,-1)
//这个页面在屏幕的左边。
视图。setAlpha(0);
}否则,如果(位置根据Android开发者的网站:
每当滚动可见/附加页面时,都会调用PageTransformer。这为应用程序提供了一个机会,可以使用动画属性对页面视图应用自定义转换
因此,在第一次加载寻呼机时,您不会看到任何过渡动画
这是你一直在使用的一个很好的方法,但我不知道你是否已经尝试过,但是你能在viewpager第一次加载时将其作为一个整体进行动画制作吗。我也遇到过类似的情况,最后我使用了一个假拖动来进行初始转换:
public void onResume() {
...
Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
// force transform with a 1 pixel nudge
mViewPager.beginFakeDrag();
mViewPager.fakeDragBy(1.0f);
mViewPager.endFakeDrag();
}
};
handler.postDelayed(r, 10); // some small delay in ms
}
我相信这就是它应该做的:ViewPager.PageTransformer
只为页面之间的转换设置动画。除此之外,我不知道如果不手动设置动画(根本没有PageTransformer
),你怎么能做你想做的事情。嗯,好吧。现在,我正在做一个小改动,把pager.setCurrentItem(1)
;pager.setCurrentItem(0,true);
来触发transformPage方法。如果你有更好的方法,我很乐意听你这么说!我不确定,但你能不能将效果应用到整个片段上,比如如果你想要淡入淡出的动画,你可以在viewpager加载时先将其应用到它。@Appyx只需选中adapter.getCount()即可修复它>0
之所以这样做,是因为setCurrentItem没有平滑滚动,导致无法调用页面转换器。