使用XML来定义Tween Animation
动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <translate> <rotate>插值元素或者是把上面的元素都放入<set>元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset。动画的指令定义了你想要发生什么样的转换,当他们发生了,应该执行多长时间,转换可以是连续的也可以使同时的。例如,你让文本内容从左边移动到右边,然后旋转180度,或者在移动的过程中同时旋转,没个转换需要设置一些特殊的参数(开始和结束的大小尺寸的大小变化,开始和结束的旋转角度等等,也可以设置些基本的参数(例如,开始时间与周期),如果让几个转换同时发生,可以给它们设置相同的开始时间,如果按序列的话,计算开始时间加上其周期。
Tween Animation共同的节点属性
属性[类型]
|
功能
|
备注
|
Duration[long]
|
属性为动画持续时间
|
时间以毫秒为单位
|
fillAfter [boolean]
|
当设置为true ,该动画转化在动画结束后被应用
|
fillBefore[boolean]
|
当设置为true ,该动画转化在动画开始前被应用
|
interpolator
|
指定一个动画的插入器
|
有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
|
repeatCount[int]
|
动画的重复次数
|
|
RepeatMode[int]
|
定义重复的行为
|
1:重新开始 2:plays backward
|
startOffset[long]
|
动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
|
zAdjustment[int]
|
定义动画的Z Order的改变
|
0:保持Z Order不变
1:保持在最上层
-1:保持在最下层
|
表二
|
XML节点
|
功能说明
|
alpha
|
渐变透明度动画效果
|
<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />
|
fromAlpha
|
属性为动画起始时透明度
|
0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字
duration为动画持续时间,ms单位
|
toAlpha
|
属性为动画结束时透明度
|
表三
|
scale
|
渐变尺寸伸缩动画效果
|
<scale
android:interpolator= “@android:anim/accelerate_decelerate_interpolator”
android:fromXScale=”0.0″
android:toXScale=”1.4″
android:fromYScale=”0.0″
android:toYScale=”1.4″
android:pivotX=”50%”
android:pivotY=”50%”
android:fillAfter=”false”
android:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />
|
fromXScale[float] fromYScale[float]
|
为动画起始时,X、Y坐标上的伸缩尺寸
|
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
|
toXScale [float]
toYScale[float]
|
为动画结束时,X、Y坐标上的伸缩尺寸
|
pivotX[float]
pivotY[float]
|
为动画相对于物件的X、Y坐标的开始位置
|
属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
|
|
|
|
|
表四
|
translate
|
画面转换位置移动动画效果
|
<translate
android:fromXDelta=”30″
android:toXDelta=”-80″
android:fromYDelta=”30″
android:toYDelta=”300″
android:duration=”2000″ />
|
fromXDelta
toXDelta
|
为动画、结束起始时 X坐标上的位置
|
|
fromYDelta
toYDelta
|
为动画、结束起始时 Y坐标上的位置
|
|
|
|
|
|
表五
|
rotate
|
画面转移旋转动画效果
|
<rotate
android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
android:fromDegrees=”0″
android:toDegrees=”+350″
android:pivotX=”50%”
android:pivotY=”50%”
android:duration=”3000″ />
|
fromDegrees
|
为动画起始时物件的角度
|
说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
|
toDegrees
|
属性为动画结束时物件旋转的角度 可以大于360度
|
pivotX
pivotY
|
为动画相对于物件的X、Y坐标的开始位
|
说明:以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
|
下面给出一个完整的XML定义(SDK提供)
<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400"
android:fillBefore="false" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="700"
android:duration="400" />
</set>
</set>
一下是实现的一个实例的截图:
所用到的xml文件如下:
1.alpha
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="2000"
/>
</set>
2.rotate
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
/>
</set>
3.scale
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="2000"
/>
</set>
4.translate
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="10"
android:toXDelta="100"
android:fromYDelta="10"
android:toYDelta="100"
android:duration="2000"
/>
</set>
具体的实现源代码如下:
public class Animation_XML_Activity extends Activity {
private Button button1;
private Button button2;
private Button button3;
private Button button4;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animation__xml_);
button1=(Button)findViewById(R.id.button_alpha);
button2=(Button)findViewById(R.id.button_rotate);
button3=(Button)findViewById(R.id.button_scale);
button4=(Button)findViewById(R.id.button_translate);
imageView=(ImageView)findViewById(R.id.imageview);
button1.setOnClickListener(new MyButton());
button2.setOnClickListener(new MyButton());
button3.setOnClickListener(new MyButton());
button4.setOnClickListener(new MyButton());
}
class MyButton implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button_alpha:
Alpha();
break;
case R.id.button_rotate:
Rotate();
break;
case R.id.button_scale:
Scale();
break;
case R.id.button_translate:
Translate();
break;
default:
break;
}
}
}
public void Alpha() {
Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.alpha);
imageView.startAnimation(animation);
}
public void Rotate() {
Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.rotate);
imageView.startAnimation(animation);
}
public void Scale() {
Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.scale);
imageView.startAnimation(animation);
}
public void Translate() {
Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.translate);
imageView.startAnimation(animation);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_animation__xml_, menu);
return true;
}
}
分享到:
相关推荐
使用XML来定义Tween Animation 动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <translate> 插值元素或者是把上面的元素都放入元素组中,默认情况下,所以的动画指令都是...
Android动画效果--FrameByFrame动画 Android 动画实现的火焰效果。
android Animation动画实现loading效果
Android-android-ui-animation-components-and-libraries.zip,android ui库、组件和动画作者@ramotion-https://github.com/ramotion/swift-ui-animation-components-libraries,安卓系统是谷歌在2008年设计和制造的。...
使用Animation-list实现等待加载动画效果,简单demo,适合新手学习使用Animation-list
.setDrawStategy(new NormalDrawStrategy()) //设置动画效果 .create(); openingStartAnimation.show(this); 除此之外,还可以设置文字、图标、一句话描述、动画时间等等,也可以自定义开屏动画,开放了策略接口,...
Android Animation Detailed Tutorial / Android 动画详尽教程 中文讲解(README)请直接点击对应标题 English explanation(or readme), Do not click on the title, please click on the tip ...
本文实例为大家分享了利用animation-list实现帧动画的具体代码,供大家参考,具体内容如下 将要顺序播放的图片放在资源目录下 再drawable目录下新建animation1文件和animation2文件 一个是按顺序显示动画,一个是...
5、如果一切正常,那么可以分别看到帧动画(frame-by-frame)、布局动画(layout animation)和视图动画(view animation) 目的:动画效果可以让用户的体验感非常好。在“演示Android中的文字和图片特效控件的使用”资源...
android 开发:动画旋转两图片,消除动画锯齿现象。
用animation实现UIView动画效果,简单上中下移动
一个App的Logo的动画效果实现
大家在使用APP的时候,有的APP在点击语音搜索界面后,会出现一个小话筒,小话筒会类似雷达似得在闪烁,表示正在倾听你说话的内容(这个大家可以参照微软的必应APP),那么问题来了,这种动画效果是如何实现的呢?...
知乎 Android 客户端启动页的视差动画效果实现 Blog 【Parallax Animation】实现知乎 Android 客户端启动页视差滚动效果 Declaration 项目中图片等素材均取自于知乎 Android 客户端,仅作学习交流之用,请勿用于...
Android 用Animation-list实现逐帧动画(WIFI)信号图,代码精简,效果明显,有需要的同学自行下载吧,是学习逐帧动画的好DEMO
逐帧动画 等待效果 wifi信号搜索效果 亲测可用
Android开发-登录界面Demo-AndroidStudio 对应博文:http://blog.csdn.net/iwanghang/article/details/78135304
微信小程序实现animation动画,具体内容如下 1. 创建动画实例 wx.createAnimation(OBJECT) 创建一个动画实例animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的...
� 由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少,但由于 Android 是一款完全 开 源的移动计算平台,相信第三方应用会很快的丰富起来。 � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的...