没有合适的资源?快使用搜索试试~ 我知道了~
android3.0以后3种动画参考.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 108 浏览量
2022-02-15
15:51:25
上传
评论
收藏 276KB PDF 举报
温馨提示
试读
11页
android3.0以后3种动画参考.pdf
资源详情
资源评论
资源推荐
3.0 以前, android 支持两种动画模式, tween animation,frame animation ,在 android3.0
中又引入了一个新的动画系统: property animation ,这三种动画模式在 SDK 中被称为
property animation,view animation,drawable animation 。
1. View Animation (Tween Animation )
View Animation ( Tween Animation ):补间动画,给出两个关键帧,通过一些算法将
给定属性值在给定的时间内在两个关键帧间渐变。
View animation 只能应用于 View 对象,而且只支持一部分属性,如支持缩放旋转而不
支持背景颜色的改变。
而且对于 View animation ,它只是改变了 View 对象绘制的位置,而没有改变 View 对
象本身,比如,你有一个 Button ,坐标( 100,100 ),Width:200,Height:50 ,而你有一个动
画使其变为 Width :100 ,Height :100 ,你会发现动画过程中触发按钮点击的区域仍是
(100,100)-(300,150) 。
View Animation 就是一系列 View 形状的变换,如大小的缩放,透明度的改变,位置的
改变,动画的定义既可以用代码定义也可以用 XML 定义,当然,建议用 XML 定义。
可以给一个 View 同时设置多个动画,比如从透明至不透明的淡入效果,与从小到大的
放大效果,这些动画可以同时进行,也可以在一个完成之后开始另一个。
用 XML 定义的动画放在 /res/anim/ 文件夹内, XML 文件的根元素可以为
<alpha>,<scale>,<translate>,<rotate>,interpolator 元素或 <set>( 表示以上几个动画的集合,
set 可以嵌套 )。默认情况下, 所有动画是同时进行的, 可以通过 startOffset 属性设置各个动
画的开始偏移(开始时间)来达到动画顺序播放的效果。
可以通过设置 interpolator 属性改变动画渐变的方式,如 AccelerateInterpolator ,开始
时慢,然后逐渐加快。默认为 AccelerateDecelerateInterpolator 。
定义好动画的 XML 文件后,可以通过类似下面的代码对指定 View 应用动画。
ImageView spaceshipImage = (ImageView)findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation=AnimationUtils.loadAnimation( this ,
R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
2. Drawable Animation (Frame Animation )
Drawable Animation (Frame Animation ):帧动画,就像 GIF 图片,通过一系列 Drawable
依次显示来模拟动画的效果。在 XML 中的定义方式如下:
1 <animation-list xmlns:android=" http://schemas.android.com/apk/res/a
ndroid "
2 android:oneshot="true">
3
<item android:drawable="@drawable/rocket_thrust1" android:durat
ion="200" />
4
5
<item android:drawable="@drawable/rocket_thrust2" android:durat
ion="200" />
6
<item android:drawable="@drawable/rocket_thrust3" android:durat
ion="200" />
7 </animation-list>
必须以 <animation-list> 为根元素, 以<item> 表示要轮换显示的图片, duration 属性表示
各项显示的时间。 XML 文件要放在 /res/drawable/ 目录下。示例:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setBackgroundResource(R.drawable.drawable_anim);
anim = (AnimationDrawable) imageView.getBackground();
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
anim.stop();
anim.start();
return true ;
}
return super .onTouchEvent(event);
}
我在实验中遇到两点问题:
1. 要在代码中调用 Imageview 的 setBackgroundResource 方法,如果直接在 XML 布
局文件中设置其 src 属性当触发动画时会 FC 。
2. 在动画 start() 之前要先 stop() ,不然在第一次动画之后会停在最后一帧,这样动画
就只会触发一次。
3. 最后一点是 SDK 中提到的,不要在 onCreate 中调用 start ,因为 AnimationDrawable
还没有完全跟 Window 相关联,如果想要界面显示时就开始动画的话,可以在
onWindowFoucsChanged() 中调用 start() 。
3. Property Animation
属性动画,这个是在 Android 3.0 中才引进的,以前学 WPF 时里面的动画机制好像就
是这个,它更改的是对象的实际属性,在 View Animation (Tween Animation )中,其改变
的是 View 的绘制效果, 真正的 View 的属性保持不变, 比如无论你在对话中如何缩放 Button
的大小, Button 的有效点击区域还是没有应用动画时的区域,其位置与大小都不变。而在
Property Animation 中,改变的是对象的实际属性,如 Button 的缩放, Button 的位置与大
小属性值都改变了。而且 Property Animation 不止可以应用于 View ,还可以应用于任何对
象。 Property Animation 只是表示一个值在一段时间内的改变,当值改变时要做什么事情完
全是你自己决定的。
在 Property Animation 中,可以对动画应用以下属性:
Duration :动画的持续时间
TimeInterpolation :属性值的计算方式,如先快后慢
TypeEvaluator :根据属性的开始、 结束值与 TimeInterpolation 计算出的因子计算出
当前时间的属性值
Repeat Country and behavoir :重复次数与方式,如播放 3 次、 5 次、无限循环,
可以此动画一直重复,或播放完时再反向播放
Animation sets :动画集合,即可以同时对一个对象应用几个动画, 这些动画可以同
时播放也可以对不同动画设置不同开始偏移
Frame refreash delay :多少时间刷新一次,即每隔多少时间计算一次属性值,默认
为 10ms ,最终刷新时间还受系统进程调度与硬件的影响
3.1 Property Animation 的工作方式
对于下图的动画,这个对象的 X 坐标在 40ms 内从 0 移动到 40 pixel. 按默认的 10ms
刷新一次,这个对象会移动 4 次,每次移动 40/4=10pixel 。
剩余10页未读,继续阅读
gy51338424
- 粉丝: 0
- 资源: 11万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0