安卓属性动画-笔记
2016-04-05 22:24
477 查看
1 ObjectAnimator
一. ObjectAnimator 之一个属性
1.ObjectAnimator.ofFloat(view,”rotation”,0F,270F).setDuration(1000).start();2. ObjectAnimator 之多个属性
常用的属性* 偏移[translationX|translationY]
* 旋转[rotation|rotationX|rotationY]
* 缩放[scaleX|scaleY]
* 具体移动的目标点[X|Y]
* 透明度[alpha]
方法一:
1.ObjectAnimator.ofFloat(view,”rotation”,0F,270F).setDuration(1000).start();
2.ObjectAnimator.ofFloat(view,”translationX”,0F,200F).setDuration(1000).start();
3.ObjectAnimator.ofFloat(view,”translationY”,0F,200F).setDuration(1000).start();
方法二: 更好的方法
1.PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat(“rotation”, 0F, 360F);
2.PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat(“translationX”, 0F, 200F);
3.PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat(“translationY”, 0F, 200F);
4.ObjectAnimator.ofPropertyValuesHolder(view, p1, p2, p3).setDuration(1000).start();
二. AnimatorSet
1.AnimatorSet set = new AnimatorSet();2.ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(View, “translationX”, 0F, 200F);
3.ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(View, “translationY”, 0F, 200F);
4.ObjectAnimator objectAnimator3 = ObjectAnimator.ofFloat(View, “rotation”, 0F, 360F);
5.
6.set.playTogether(objectAnimator1,objectAnimator2,objectAnimator3); //同时效果
7.set.playSequentially(objectAnimator1,objectAnimator2,objectAnimator3); //按顺序执行动画
8.
9./**
10. * 先运行 2, 和1 一起执行,
11. * 再执行 动画 3
12. * play()方法后面可以 .with() . after() .before() 等方法
13. */
14.set.play(objectAnimator2).with(objectAnimator1); //两个同时执行
15.set.play(objectAnimator2).after(objectAnimator3); //动画 2 完成后,再执行动画3
16.
17.
18.set.setDuration(1000);
19.set.start();
三. 动画的监听事件
1.ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(View, “translationX”, 0F, 200F);方法一:实现全部的接口方法
objectAnimator1.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } });
方法二: 实现接口,可选接口方法
objectAnimator1.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); } });
四. ValueAnimator 数值发生器
A. 简单的例子
ValueAnimator animator = ValueAnimator.ofInt(0, 100); animator.setDuration(5000); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer)animation.getAnimatedValue(); //直接对控件进行操作 } }); animator.start();
B. 自定义的数值发生器
ValueAnimator animator = ValueAnimator.ofObject(new TypeEvaluator<PointF>() { /** * 产生数 * @param fraction 时间因子 * @param startValue 起始值 * @param endValue 结束值 * @return */ @Override public PointF evaluate(float fraction, PointF startValue, PointF endValue) { return null; } }); animator.setDuration(5000); animator.start();
五. 动画发生曲线
Interpolator 差值器
* AccelerateInterpolator : 加速度 * AnticipateInterpolator : * LinearInterpolator : * DecelerateInterpolator : * BounceInterpolator : * OverShootInterpolator :
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories