Android---动画机制(一)---View动画和帧动画

Android中的动画效果一直是人机交互中的一个非常重要的一个部分.接下来就让我研究研究Android中动画的特性分析等
动画的分类

  1. View动画 也是我们常说的补间动画
  2. Frame动画 也是我们常说的帧动画
  3. 属性动画

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值