让你ViewPager的滑动顺滑起来!
2018-01-10 16:24
162 查看
我们在使用ViewPager时,就是写个Adapter,拿到数据,填充进去,OVER!
滑动时很平稳,与我们在用其它APP时看到的舒服的,流畅的滑动不同,它们都加了特效!
话不多说,直接上谷歌给的类 ZoomOutPageTransformer
还有官方文档 谷歌文档在此
使用很简单 拿到ViewPager 在配置适配器之后“上特效即可”
initData();
vp_guid.setAdapter(new GuidAdapter());
vp_guid.setPageTransformer(true,new ZoomOutPageTransformer());
接下来看一下此类
(2)是具体计算渐变动画的逻辑
至于为什么
之后就是向下渐变的逻辑了.
还有另外一点
如果你的ViewPager不可以回滚了,子View有容器了 不妨修改适配器如下
最后,这些总结希望对你有用!
滑动时很平稳,与我们在用其它APP时看到的舒服的,流畅的滑动不同,它们都加了特效!
话不多说,直接上谷歌给的类 ZoomOutPageTransformer
还有官方文档 谷歌文档在此
使用很简单 拿到ViewPager 在配置适配器之后“上特效即可”
initData();
vp_guid.setAdapter(new GuidAdapter());
vp_guid.setPageTransformer(true,new ZoomOutPageTransformer());
接下来看一下此类
public 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 page, float position) { int pageWidth = page.getWidth(); int pageHeight = page.getHeight(); //(1)引导页左上角的点是 0 右上角是 1 所以才有如下算法 if (position<-1){ page.setAlpha(0); }else if (position<=1){ //(2) float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1-scaleFactor)/2; float horzMargin = pageWidth * (1-scaleFactor)/2; if (position<0){ page.setTranslationX(horzMargin - vertMargin / 2); }else { page.setTranslationX(-horzMargin+vertMargin/2); } page.setScaleX(scaleFactor); page.setScaleY(scaleFactor); page.setAlpha(MIN_ALPHA+(scaleFactor - MIN_SCALE)/(1-MIN_SCALE)*(1-MIN_ALPHA)); }else { page.setAlpha(0); } } }总结分析一下:算法较为简单,(1)处拿到滑动的位置
(2)是具体计算渐变动画的逻辑
至于为什么
vertMargin / 2是X轴的缩放,水平边距要减去page垂直边距的一半。看起来更合适??
之后就是向下渐变的逻辑了.
还有另外一点
如果你的ViewPager不可以回滚了,子View有容器了 不妨修改适配器如下
@Override public void destroyItem(ViewGroup container, int position, Object object) { ImageView view = array_images.get(position); container.removeView(view); }
最后,这些总结希望对你有用!
相关文章推荐
- Android ViewPager初探:让页面滑动起来
- Android ViewPager初探:让页面滑动起来
- scrollView中放ViewPager和GridView滑动起来,事件冲突的问题。
- Viewpager完美实现左右循环滑动
- Android ViewPager 实现图片左右滑动查看
- ViewPager控制滑动问题
- ViewPager多页面滑动切换以及动画效果(精)
- Android 特效库 - 实现滑动ViewPager渐变背景色
- Android开发之利用ViewPager实现导航页和滑动标签页效果
- Fragment利用ViewPager实现左右滑动--第三方开源--SlidingTabLayout和SlidingTabStrip实现
- viewpager+fragment实现滑动效果
- 可以滑动的Fragement(viewpager)
- android viewpager+fragment与利用viewpager滑动分页小技巧
- 兔子--Fragment与ViewPager要切换滑动效果
- 自定义类似于ViewPager的可上下滑动切换效果的视图
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- 自定义ViewGroup实现纵向滑动切换的ViewPager
- 简单的实现Fragment+Viewpager滑动界面的实现(伪)
- 自定义的带tab的可左右滑动的viewpager之一 简单实现
- ViewPager+GridView实现横向滑动 仿美团