android中Animation动画的连续播放与播放完毕后停留在最后的状态
我们做安卓应用的苦逼程序员们常常会需要用到Animation也就是动画。比如做地图功能的时候。我们在手机旋转时需要根据手机重力感应来调整地图的角度,让它上面的“北”一直指向地球的北面。。。
好多人做动画的时候会遇到这么两个难题(我也曾经遇到过):
1:动画执行完了一遍后又立刻恢复到了初始状态,或者动画只能不断循环动作。【问题:我想让动画动到某个位置或转到某个角度后停在那里,该如何做呢?】
2:点击按钮一、动画从0度转到了10度,我再点击按钮二、需要动画从之前的10度位置再继续转到20度。再点击按钮三......【问题:如何让动画连续起来?而不是每次都有从0度开始转到10、再从0度开始转到20度......】
针对上面两个问题我们来看看动画类,这里我拿RotateAnimation(旋转动画,其他动画有类似之处)来讲解:
RotateAnimation(float fromDegrees,float toDegtees,float pivotX,float pivotY);
这里面 :
fromDegrees为旋转动画的起始角度
toDegtees为旋转动画的结束角度
pivotX和pivotY为旋转动画的锚点位置,也就是说我的动画是根据哪个顶点来旋转的。
从参数来看,我们只要在一次动画执行完毕后记录当前动画转到了哪里,再在下次执行动画的时候将这个记录下来的位置传给fromDegrees就会发现你的动画接着上次的位置继续旋转了下去。这样我们就解决了问题2了。
再看看问题1:想让动画执行完毕后固定在动画结束的那一帧上可以设置rotateAnimation.setFillAfter(true);方法。将值传为true就可以了。。。
/**旋转的动画
* @param mView 需要选择的View
* @param startDegress 初始的角度【从这个角度开始】
* @param degrees 当前需要旋转的角度【转到这个角度来】
*/
public void showAnimation(View mView,int startDegress,int degrees)
{
float centerX = mView.getWidth() / 2.0f;
float centerY = mView.getHeight() / 2.0f;
//这个是设置需要旋转的角度(也是初始化),我设置的是当前需要旋转的角度
RotateAnimation rotateAnimation = new RotateAnimation(startDegress,degrees,centerX,centerY);//centerX和centerY是旋转View时候的锚点
//这个是设置动画时间的
rotateAnimation.setDuration(10);
//动画执行完毕后是否停在结束时的角度上
rotateAnimation.setFillAfter(true);
//启动动画
mView.startAnimation(rotateAnimation);
}
From:http://blog.csdn.net/zhtqmima/article/details/12910871
android中Animation动画的连续播放与播放完毕后停留在最后的状态的更多相关文章
- Android中的动画
Android中的动画分为: 1.逐帧动画(Frame Animation): 把动画过程的每张静态图片都收集起来,然后由Android来控制依次显示这些静态图片,然后利用人眼”视觉暂留“的原理,给 ...
- Android中矢量动画
Android中矢量动画 Android中用<path> 标签来创建SVG,就好比控制着一支画笔,从一点到一点,动一条线. <path> 标签 支持一下属性 M = (Mx, ...
- Android中的动画具体解释系列【4】——Activity之间切换动画
前面介绍了Android中的逐帧动画和补间动画,并实现了简单的自己定义动画.这一篇我们来看看怎样将Android中的动画运用到实际开发中的一个场景--Activity之间跳转动画. 一.定义动画资源 ...
- Android中的动画详解系列【4】——Activity之间切换动画
前面介绍了Android中的逐帧动画和补间动画,并实现了简单的自定义动画,这一篇我们来看看如何将Android中的动画运用到实际开发中的一个场景--Activity之间跳转动画. 一.定义动画资源 如 ...
- Android笔记(六十三) android中的动画——逐帧动画( frame-by-frame animation)
就好像演电影一样,播放实现准备好的图片,来实现动画效果. 逐帧动画需要用到AnimationDrawable类,该类主要用于创建一个逐帧动画,然后我们把这个动画设置为view的背景即可. androi ...
- Android笔记(六十四) android中的动画——补间动画(tweened animation)
补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐. 补间动画由一下四种方式: 1.AplhaAnimation——透明度动画效果 2.ScaleAnimation ——缩放动画效 ...
- 初识android中的动画
动画效果可以大大提高界面的交互效果,因此,动画在移动开发中的应用场景较为普遍.掌握基本的动画效果在成熟的软件开发中不可或缺.除此之外,用户对于动画的接受程度远高于文字和图片,利用动画效果可以加深用户对 ...
- Android中的动画机制
1 逐帧动画 逐帧动画 就是一系列的图片按照一定的顺序展示的过程. 逐帧动画很简单, 只需要在drawable中或者anim中定义一个Animation-list 其中包含多个it ...
- Android Property Animation动画
3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三 ...
随机推荐
- AutoFac文档11(转载)
目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 元数据 Autofac ...
- C++知识点 笔试常见
C++知识点 一.#include “filename.h”和#include <filename.h>的区别 #include “filename.h”是指编译器将从当前工作目录上开 ...
- DB2中如何取得随机数
转自:http://blog.csdn.net/jionghan3855/article/details/2246738 在DB2数据库自定义产生指定位数的随机数函数. DB2产生随机数的函数:RAN ...
- mysql 主主复制(双主复制)报错Last_SQL_Errno: 1146
Last_Errno: 1146 Last_Error: Error 'Table 'test.user' doesn't exist' on query. Default database: 'te ...
- js中如何判断一个字符串包含另外一个字符串?
js中判断一个字符串包含另外一个字符串的方式比较多? 比如indexOf()方法,注意O是大写. var test="this is a test"; if(test.indexO ...
- 自定义流水号的autocode
; } }; ); dac.executeUpdate(); , TimeUnit.); ); ); } ); }}
- 用swift开发仪表盘控件(二)
二.代码分析 这个控件本质就是从UIView继承的一个类而已.所以整个代码事实上就是一个定制的UIView类. 依据UIView的规则进行例如以下初始化: required init(coder aD ...
- Tablespace for table '`pomelo`.`bag`' exists. Please DISCARD the tablespace before IMPORT.
//遇到的问题是,删除数据库之后,重新创建数据库,在创建数据库表的时候,明明没有该表,却提示存在这个表.这是数据库缓存造成的 //解决方法 FLUSH TABLES; /* 安装MySql数据库(略) ...
- asp.net 导出EXCEL超高兼容(不用装Excel)
用网上的代码你会发现,下载下来后,会提示"你尝试打开的的文件的格式与文件扩展名指定的格式不一致 请验证文件没有损坏且来源可信的提示,研究了好久 后来发现可以使用人家做好的组件NOPI去实现, ...
- hadoop杂记-为什么会有Map-reduce v2 (Yarn)
转自:http://www.cnblogs.com/LeftNotEasy/archive/2012/02/18/why-yarn.html 前言: 有一段时间没有写博客了(发现这是我博客最常见的开头 ...