为了账号安全,请及时绑定邮箱和手机立即绑定
  • 原来Android 3.0之前是没有动画的
    查看全部
  • 学习方法
    查看全部
  • Google官网!一行代码!
    查看全部
  • jazzViewPager
    查看全部
  • 动画的实现方法
    查看全部
  • viewPager 切换动画
    查看全部
  • 3.0以上只需要一行代码
    查看全部
  • 自定义ViewPager实现动画切换效果(主要是Translation和Scale) 实现切换时的动画需要哪些准备: 1. 首先需要拿到当前切换的两个View --> 通过Map存储与获取 2. 设置一个动画的梯度值。-->通过offset,OffsetPixels 有三种方式实现ViewPager页面切换动画: 1. 通过API提供的源码(只支持Android3.0以上版本),调用setPageTransformer(true,new XxxTransformer()); 2. 自定义ViewPager; 3. 用开源项目JazzyViewPager实现ViewPager切换动画。
    查看全部
  • 如图,是自定义的方法 animStack(),实现动画效果: public void animStack(View left, View right, float offset, int offsetPixels){ if (right!=null){ // 从0页到1页,offset:从0到1 mScale = (1-MIN_SACLE) * offset + MIN_SACLE; // 因为offset一开始是0,所以mScale一开始是等于MIN_SACLE,然后逐渐增加到1。 mTrans = -getWidth()-getPageMargin() + offsetPixels; // getPageMargin()是边距。offsetPixels会从0变到屏幕的宽度,mTrans从负的屏宽变为0。 //mTrans = -(1- offset ) * left.getWidth(); // 设置动画 ViewHelper.setScaleX(right,mScale); ViewHelper.setScaleY(right,mScale); ViewHelper.setTranslationX(right,mTrans); } if (left!=null){ left.bringToFront(); // 保证左边的页面始终在最上面。 } }
    查看全部
  • 自定义ViewPager实现动画切换效果 新建一个类ViewPagerWithTransformerAnim,继承ViewPager,继承它的两个构造方法。 其余代码: 成员变量: private View mLeft; private View mRight; private float mTrans; private float mScale; private static final float MIN_SACLE = 0.6f; private Map<Integer,View> mChildren = new HashMap<Integer, View>(); // 添加View public void setViewForPosition(View view,int position){ mChildren.put(position,view); } // 移除View public void removeViewFromPosition(int position){ // Integer position mChildren.remove(position); } 重写onPageScrolled(): protected void onPageScrolled(int position, float offset, int offsetPixels) { super.onPageScrolled(position, offset, offsetPixels); /** *在这里打印日志,观察position和offset在ViewPager滑动的时候产生的变化,我们发现: *0~1: position == 0 , offset = 0~1 *1~0: position == 0 , offset = 1~0 */ //直接使用position或者getCurrentItem()和getChildItem()都有可能出错。通过Map存储与获取会比较稳定。 mLeft = mChildren.get(position); mRight = mChildren.get(position+1); animStack(mLeft,mRight,offset,offsetPixels); }
    查看全部
  • 谷歌提供的ViewPager切换动画为何只支持Android3.0以上版本?因为动画使用了属性动画。 属性动画仅支持Android3.0以上版本,如果要向下兼容,可以通过 NineOldAndroids 进行实现。 A页切换到B页: A页的position由0.0渐变到-1.0; B页的position由1.0渐变到0.0。 1、ViewPager.setPageTransformer实现切换动画; 2、修改ViewPager内部代码 + 使用NineOldAndroids代替属性动画实现向下兼容; 3、观察API的规律,自定义我们的切换动画。 4、自定义ViewPager实现动画切换效果
    查看全部
  • 自定义RotateDownPageTransformer 实现 ViewPager.PageTransformer接口, 添加成员变量: private static final float MAX_ROTATE = 20f; private float mRot; 并重写transformPage(): Log.i("TAG","view="+view+",position="+position); int pageWidth = view.getWidth(); if (position < -1) { ViewHelper.setRotation(view,0); // 不做旋转 } /** * A页切换到B页:A页的position由0.0渐变到-1.0;B页的position由1.0渐变到0.0 */ else if (position <= 0) { // [-1,0] 此为A页 // 0 ~ -20 的变化 mRot = position * MAX_ROTATE; // 设置旋转中心为底线中点 ViewHelper.setPivotX(view,pageWidth/2); ViewHelper.setPivotY(view,view.getMeasuredHeight()); // 设置动画效果 ViewHelper.setRotation(view,mRot); } else if (position <= 1) { // (0,1] 此为B页 // 20 ~ 0 的变化 mRot = position * MAX_ROTATE; // 设置旋转中心为底线中点 ViewHelper.setPivotX(view,pageWidth/2); ViewHelper.setPivotY(view,view.getMeasuredHeight()); // 设置动画效果 ViewHelper.setRotation(view,mRot); } else { // (1,+Infinity] ViewHelper.setRotation(view,0); }
    查看全部
  • 看到-15分
    查看全部
  • A页切换到B页 A页的position 0~-1 B页的position 1~0
    查看全部

举报

0/150
提交
取消
课程须知
本课程需要大家对Android的了解要达到小成的境界: 1、熟悉Android常用API 2、了解Android如何自定义控件 3、了解属性动画
老师告诉你能学到什么?
通过本课程,你将学到: 1、PageTransformer的介绍与使用 2、自定义PageTransformer打造个性动画切换效果 3、属性动画的使用 4、自定义ViewPager实现个性的动画切换效果

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!