android动画
android 支持三种类型的动画
1属性动画:
一种补间动画(tweened animation),通过在目标对象的任何属性的两个值之间应用增量变化,可以生成一种动画效果,这种动画效果可以生成各种效果,从改变一个视图的颜色或透明度来使之淡入淡出,改变字体的大小,或者增加字符的生命力。
2视图动画:
一种补间动画,可以用来旋转,移动,拉伸一个视图
3帧动画:
逐帧的格子动画,用来显示一系列的Drawable图片
将动画作为外部资源定义之后,就可以在多个地方重复使用同一序列,也可以根据不同的设备硬件或者显示方向来显示不同的动画。
属性动画:
属性动画器是一个功能强大的框架,几乎可以为任何东西生成动画,每个属性动画都存储在项目res/animator文件夹下的一个单独的xml文件中,
和布局文件及Drawable一样,动画的文件名称也被用作他的资源标识符。
下面的简单xml代码显示了一个简单属性动画,他在一秒的时间内以增量的方式在0到1之间渐变。可以调用目标对象的setAlpha方法,从而改变目标对象的透明度
用View.setAlpha(R.ainimator.fade)就可以改变view的透明度了。
视图动画
每个属性动画都存储在项目res/anim文件夹下的一个单独的xml文件中,和布局文件及Drawable一样,动画的文件名称也被用作他的资源标识符。
一个动画可以定义按照以下的方式变化,alpha(淡入淡出)scale(缩放)translate(移动)rotate(旋转)
下表中显现了每种动画类型所支持的有效的属性和属性值
![]()
可以使用set标签创建一个动画组合,一个动画集可以包含一个或者多个动画变换,并且支持使用多个额外标签和属性来定制动画集合中的每一个动画何时及如何播放
下面列出了一些可以的set标签
1 duration 动画持续的时间,以毫秒为单位
2 startOffSet 动画开始之前的延迟,以毫秒为单位
3 fillBeforetrue 在动画开始之前应用动画变形
4 fillAftertrue 在动画开始之后应用动画形变
5 interploaor 用来设置这种效果随时间变化的速度,需要引用android:anim/interpolatorName处的系统动画资源。
注意:如果没有使用startOffset标签,那么动画集合中的的所有动画效果都会同时执行。
下面这个例子展示了这样一个动画效果,目标在旋转360度的同时,逐渐收缩并淡出
![]()
下面是在代码中使用的代码片段
Animation a = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fade_out); m_ImageView.setAnimation(a);m_ImageView.setVisibility(View.GONE);其中R.anim.fade_out就是这个xml文件的名称。
逐帧动画
逐帧动画可以用来创建Drawable的序列,没个Drawable都会在视图的背景中持续一段时间,
因为逐帧动画代表的是可以运动的Drawable,所以他们存储在res/drawable文件夹中,并且他们使用文件名(没有.xml扩展名)来作为其资源id
下面的xml代码片段显示了一个简单的逐帧动画,他可以循环显现一系列的位图资源,每个资源会持续半秒钟,为了使用这段代码,你需要创建新的图片资源android1,android2, android3
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
andrioid:drawable="@drawable/android1"
android:duration="500">
</item>
<item
andrioid:drawable="@drawable/android2"
android:duration="500">
</item>
<item
andrioid:drawable="@drawable/android2"
android:duration="500">
</item>
</animation-list>
注意:在很多时候,应该在-ldpi, -mdip, -hdpi, 和-xdpi Drawable文件夹中根据情况给动画链表中所使用的每个Drawable包含多个分辨率的版本
要播放动画,首先将资源分配给要播放动画的视图,然后获取Animation Drawable对象的引用,并开始播放动画
ImageView mImageView = (ImageView)findViewById(R.id.imageview);
mImageView.setBackgroundResource(R.drawable.android_anim) android_anim就是上面逐帧动画的xml文件名
AnimationDrawable ad = (AnimationDrawable)mImageview.getBackground();
ad.start(); // 开始播放动画
在日常的工作中动画的基本用法就这些,如果有兴趣,可以去看一下动画框架。这个我以后也会去看。
本文详细介绍了Android平台上的三种动画类型:属性动画、视图动画和帧动画。解释了它们的实现方式、XML配置方法以及如何在代码中应用这些动画。
2655

被折叠的 条评论
为什么被折叠?



