Android中的动画效果一直是人机交互中的一个非常重要的一个部分.接下来就让我研究研究Android中动画的特性分析等
动画的分类
- View动画 也是我们常说的补间动画
- Frame动画 也是我们常说的帧动画
- 属性动画
View动画的分析:
在View动画的探索过程中我们主要用到了Animation原生的框架,实现原理 是每次绘制视图时View所在的ViewGroup种的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧.如果没有动画完成就继续调用invalidate()函数,启动下次绘制来驱动动画.
View动画的作用对象是View,它支持4种动画效果
- 平移动画----TranslateAnimation
- 缩放动画----ScaleAnimation
- 旋转动画----RotateAnimation
- 透明度动画----AlphaAnimation
四种动画效果既可以通过XML来定义又可以通过代码来动态创建.
以下是View动画Java代码编写
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnAlpha(View view) {
//参数为透明度的呈现百分比
AlphaAnimation aa = new AlphaAnimation(0, 1);
aa.setDuration(2000);
view.startAnimation(aa);
}
public void btnRotate(View view) {
//以View的100,100坐标旋转360度
RotateAnimation ra = new RotateAnimation(0, 360, 100, 100);
ra.setDuration(1000);
view.startAnimation(ra);
}
public void btnRotateSelf(View view) {
//以自身的中点旋转360度
RotateAnimation ra = new RotateAnimation(0, 360,
RotateAnimation.RELATIVE_TO_SELF, 0.5F,
RotateAnimation.RELATIVE_TO_SELF, 0.5F);
ra.setDuration(1000);
view.startAnimation(ra);
}
public void btnTranslate(View view) {
//以View自身坐标的(0,0)点开始移,移动到(200,300)坐标
TranslateAnimation ta = new TranslateAnimation(0, 200,0, 300);
ta.setDuration(1000);
view.startAnimation(ta);
}
public void btnScale(View view) {
//以View自身坐标的(0,0)点开始缩放,缩放到X的3倍大小Y的2倍大小
ScaleAnimation sa = new ScaleAnimation(0, 3, 0, 2);