【安卓】自定义基于onDraw的任意动画(不仅仅是平移/旋转/缩放/alpha)、!
来源:互联网 发布:eval在js中 编辑:程序博客网 时间:2024/05/16 23:51
思路:
1.基于时间的显示映射。如:给定度数,显示圆弧,加上时序,即可有圆弧动画的效果
2.给定时序。用于驱动动画的一帧帧绘制
方案一、基于ObjectAnimator。动画运作时会调用degree对应set函数(基于放射调用),即setDegree。
ObjectAnimator ani=ObjectAnimator.ofInt(myView, "degree", 0,300);
ani.start();
注:1>混编后,默认会将setDegree混掉,导致找不到函数,故混编后这种机制会失效。解决方法是1.proguard中防止该段代码混编(具体方法百度) 2.使用方法二
2>ObjectAnimator在3.0后才支持,可使用NineOldAndroids库,效果完全一样。
方案二、仍然基于ObjectAnimator。但基于回调,这种方法未用到反射,故混编时仍ok
ObjectAnimator ani=ObjectAnimator.ofInt(myView, new Prop(), 0,300);
ani.start();
class Prop extends Property<View, Integer> {public Prop() {// TODO Auto-generated constructor stubsuper(Integer.class, "kk");}@Overridepublic void set(View object, Integer value) {// TODO Auto-generated method stub((MyView1)object).setDegree(value);}@Overridepublic Integer get(View object) {// TODO Auto-generated method stubreturn null;}};
方案三、用animation提供时序。interpolatedTime为0~1,即时间的百分比。
Animation ani=new Animation() {@Overrideprotected void applyTransformation(float interpolatedTime,Transformation t) {// TODO Auto-generated method stubmyView.setDegree((int)(interpolatedTime*300f));}};ani.setDuration(3000);myView.startAnimation(ani);
//===========================================================================
自定义视图,setDegress可改变圆弧角度:
private class MyView1 extends ImageView {public int degree = 0;public MyView1(Context ct) {// TODO Auto-generated constructor stubsuper(ct);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);Rect r = new Rect();getLocalVisibleRect(r);canvas.drawArc(new RectF(r), 0, degree, true, pt);}public void setDegree(int degree) {this.degree = degree;invalidate();}}
效果:
88 0
- 【安卓】自定义基于onDraw的任意动画(不仅仅是平移/旋转/缩放/alpha)、!
- 安卓动画(旋转,平移,透明,缩放,帧动画)
- 安卓的各种动画(透明度,平移,旋转,缩放)以及侦听
- 旋转平移,缩放,透明度渐变的补间动画
- 旋转、平移、缩放和透明度渐变的补间动画
- [CAAnimation核心动画练习一]普通的平移,旋转,缩放
- css3平移、旋转、倾斜、缩放、动画效果的实现
- 三角形的平移&旋转&缩放程序(基于OPENCV)
- 图形开发之基于向量矩阵的平移、旋转、缩放
- android自定义动画平移旋转
- 自定义View的平移 旋转 缩放 侧切 对称
- android动画(平移,旋转,缩放,透明度)
- android动画基础--旋转移动平移缩放
- 动画:加速 平移 缩放 通明 旋转
- Android动画基础:平移、缩放、旋转、透明度
- 补间动画 旋转 平移 缩放 透明
- (安卓)属性动画 (平移,旋转,透明)
- 基于vtkTransform进行旋转、平移和缩放
- android ListView的overscroll(模糊渐变效果)
- poj1001
- Linux下命令安装DB2 9.7 express免费版数据库的步骤(已经实践过并补充有关问题)
- JAXB主要用来实现对象和XML之间的序列化
- Android连接webservice笔记
- 【安卓】自定义基于onDraw的任意动画(不仅仅是平移/旋转/缩放/alpha)、!
- SuppressWarnings("unchecked")
- 技术路线0
- python 浅拷贝与深拷贝
- 解除svn版本控制
- mysql 空间类型 point 使用方式
- duplicate symbol _*** in:
- 装箱和拆箱(boxing&unboxing)-.NET
- jQuery 选择器获取组合类中的类名