zoukankan      html  css  js  c++  java
  • 使用属性动画(Animator)来完成动画

    一直以来,完成动画的时候都使用的是AniamtionSet,把所有的动画放在一个集合中,这就是传统的动画,但是这存在有很大的弊端,例如下边一段代码,布局文件分别由一个IamgeView和一个Button组成,对Button和ImageVew添加如下监听事件:

     1 @Override
     2     public void onClick(View view) {
     3         // TODO Auto-generated method stub
     4         switch (view.getId()) {
     5         //对ImageView添加监听
     6         case R.id.img:
     7             Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_SHORT).show();
     8             break;
     9         //对按钮添加监听,是ImageView沿XY轴对角线向下平移180个像素
    10         case R.id.btn_move:
    11         {
    12             TranslateAnimation trans = new TranslateAnimation(0,180,0,180);
    13             trans.setDuration(1000);
    14             trans.setFillAfter(true);;  
    15             img.startAnimation(trans);
    16         }
    17     }

     当程序运行完后,你会发现一个奇怪的现象:

           

    当你去点击图片的原始位置时,即时图片已经移动走了,但是你点击图片原来的空白位置,仍然会触发ImageView的点击事件,而你去点击移动后的这张图片,他却不会触发ImageView的点击事件。

    所以说,使用传统 的动画存在一定的弊端,下面对属性动画简单的进行使用。

    1 ObjectAnimator.ofFloat(img, "translationY", 0F,180F).setDuration(1000).start();
    2 ObjectAnimator.ofFloat(img, "translationX", 0F,180F).setDuration(1000).start();

    使用ObjectAnimator来对动画进行控制的时候,只需要调用ofFloat()就可以了,这个方法的参数分别代表:

    * 1、要操作的对象
    * 2、要操作对象的属性
    * 3、动画变化的范围

    将对Button的监听改为以上代码后,就不会出现上述奇怪的现象了,就会实现“指哪打哪”的效果了。

     不积跬步,无以至千里;不积小流,无以成江海

  • 相关阅读:
    PHP.29-TP框架商城应用实例-后台6-商品会员添加-价格、级别
    PHP.TP框架下商品项目的优化4-优化商品添加表单js
    TP-常见错误1
    python+pyqt5实现24点小游戏
    OpenCV+Python识别车牌和字符分割的实现
    python爬取酷狗音乐排行榜
    python-itchat 统计微信群、好友数量的实例
    Python爬虫beautifulsoup4常用的解析方法总结
    Python视频人脸检测识别
    Python openpyxl : Excel 文档简单操作
  • 原文地址:https://www.cnblogs.com/mengyan1124/p/4674652.html
Copyright © 2011-2022 走看看