android学习——android Animation 动画效果
来源:互联网 发布:mac清理重复文件 编辑:程序博客网 时间:2024/06/06 03:02
- Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果
- Frame Animation:顺序播放事先做好的图像,跟电影类似
- Alpha:渐变透明度动画效果
- Scale:渐变尺寸伸缩动画效果
- Translate:画面转换位置移动动画效果
- Rotate:画面转换位置移动动画效果
一种是tweened animation(渐变动画)
XML中
JavaCode
alpha
AlphaAnimation
scale
ScaleAnimation 一种是frame by frame(画面转换动画)
XML中
JavaCode
translate
TranslateAnimation
rotate
RotateAnimation
表一
属性[类型]功能 Duration[long]属性为动画持续时间时间以毫秒为单位fillAfter [boolean]当设置为true ,该动画转化在动画结束后被应用fillBefore[boolean]当设置为true ,该动画转化在动画开始前被应用interpolator
指定一个动画的插入器有一些常见的插入器accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果repeatCount[int]动画的重复次数 RepeatMode[int]定义重复的行为1:重新开始 2:plays backwardstartOffset[long]动画之间的时间间隔,从上次动画停多少时间开始执行下个动画zAdjustment[int]定义动画的Z Order的改变0:保持Z Order不变
1:保持在最上层
-1:保持在最下层
android: shareIntetpolator 是否共享动画效果 。 值为 true 或者 false 。
两种实现方法
1 java 代码
// TODO Auto-generated method stub//第一个参数fromX为动画起始时 X坐标上的伸缩尺寸 //第二个参数toX为动画结束时 X坐标上的伸缩尺寸 //第三个参数fromY为动画起始时Y坐标上的伸缩尺寸 //第四个参数toY为动画结束时Y坐标上的伸缩尺寸 /* * 说明: 以上四种属性值 0.0表示收缩到没有 1.0表示正常无伸缩 值小于1.0表示收缩 值大于1.0表示放大 *///第五个参数pivotXType为动画在X轴相对于物件位置类型 //第六个参数pivotXValue为动画相对于物件的X坐标的开始位置 //第七个参数pivotXType为动画在Y轴相对于物件位置类型 //第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置 ScaleAnimation scaleAnimation = new ScaleAnimation(1f, 0.5f, 1f, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);scaleAnimation.setDuration(2000);findViewById(R.id.img).setAnimation(scaleAnimation);// TODO Auto-generated method stub//第一个参数fromDegrees为动画起始时的旋转角度 //第二个参数toDegrees为动画旋转到的角度 //第三个参数pivotXType为动画在X轴相对于物件位置类型 //第四个参数pivotXValue为动画相对于物件的X坐标的开始位置 //第五个参数pivotXType为动画在Y轴相对于物件位置类型 //第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置 RotateAnimation rotateAnimation = new RotateAnimation(0, 180,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 2.0f);rotateAnimation.setDuration(2000);findViewById(R.id.img).setAnimation(rotateAnimation);// TODO Auto-generated method stub//fromXDelta为动画起始时 X坐标上的移动位置 //toXDelta为动画结束时 X坐标上的移动位置 //fromYDelta为动画起始时Y坐标上的移动位置 //toYDelta为动画结束时Y坐标上的移动位置 //Animation.RELATIVE_TO_SELF 相对本控件TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 1.0f,Animation.RELATIVE_TO_SELF, 1.0f,Animation.RELATIVE_TO_SELF, 1.0f,Animation.RELATIVE_TO_SELF, 1.0f);//设置动画持续时间 translateAnimation.setDuration(2000);findViewById(R.id.img).setAnimation(translateAnimation);// 第一个参数fromAlpha为 动画开始时候透明度// 第二个参数toAlpha为 动画结束时候透明度// 0.0表示完全透明// 1.0表示完全不透明AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);//设置时间alphaAnimation.setDuration(1000); findViewById(R.id.img).setAnimation(alphaAnimation);
如何使用Java代码中的动画效果 使用从View父类继承过来的方法startAnimation()来为View或是子类View等等添加一个动画效果 findViewById(R.id.ScaleAnimation_btn).setOnClickListener(new ScaleButtonOnClickListener());
如何在XML文件中定义动画
① 打开Eclipse,新建Android工程
② 在res目录中新建anim文件夹
③ 在anim目录中新建一个myanim.xml(注意文件名小写)
④ 加入XML的动画代码
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha/>
<scale/>
<translate/>
<rotate/>
</set>
复制代码
Android动画解析--XML
<alpha>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/>
<!-- 透明度控制动画效果 alpha
浮点型值:
fromAlpha 属性为动画起始时透明度
toAlpha 属性为动画结束时透明度
说明:
0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字
长整型值:
duration 属性为动画持续时间
说明:
时间以毫秒为单位
-->
</set>
复制代码
<scale>
<?xml version="1.0" encoding="utf-8"?>
<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.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:startOffset=“700”
android:duration="700" />
</set>
<!-- 尺寸伸缩动画效果 scale
属性:interpolator 指定一个动画的插入器
在我试验过程中,使用android.res.anim中的资源时候发现
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
浮点型值:
fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
toXScale 属性为动画结束时 X坐标上的伸缩尺寸
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
toYScale 属性为动画结束时Y坐标上的伸缩尺寸
startOffset 属性为从上次动画停多少时间开始执行下个动画
说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明:
以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
布尔型值:
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
复制代码
<translate>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
<!-- translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定fromXType toXType fromYType toYType 时候,
默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
-->
</set>
复制代码
<rotate>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
<!-- rotate 旋转动画效果
属性:interpolator 指定一个动画的插入器
在我试验过程中,使用android.res.anim中的资源时候发现
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
浮点数型值:
fromDegrees 属性为动画起始时物件的角度
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
说明:
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明: 以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
-->
</set>
复制代码
如何使用XML中的动画效果
public static Animation loadAnimation (Context context, int id)
//第一个参数Context为程序的上下文
//第二个参数id为动画XML文件的引用
//例子:
myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action);
//使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件
复制代码
class TranslateButtonOnClickListener1 implements OnClickListener{@Overridepublic void onClick(View v) {Animation animation = AnimationUtils.loadAnimation(HelloAnimationsXml.this, R.anim.translate);imageView.startAnimation(animation);}}
如果一种动画效果不能满足需求,也可以在xml中定义 两种以上的 动画效果 。 要是要统一设置动画下过,可以使用 AnimationSet 。
AnimationSet 是Animation的子类 。
AnimationSet animationSet=new AnimationSet(true);
animationSet.setDuration(500);
frame by frame
xml
<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="true"><item android:drawable="@drawable/n1" android:duration="500"/><item android:drawable="@drawable/n2" android:duration="500"/><item android:drawable="@drawable/n3" android:duration="500"/><item android:drawable="@drawable/n4" android:duration="500"/><item android:drawable="@drawable/n5" android:duration="500"/></animation-list>
imageView.setBackgroundResource(R.drawable.anim);AnimationDrawable animationDrawable=(AnimationDrawable)imageView.getBackground();animationDrawable.start();
结果是安装顺序执行一次。
- android学习——android Animation 动画效果
- Android 动画效果——Animation 动画
- Android 动画效果 --Animation
- Android 动画效果 --Animation
- Android 动画效果 --Animation
- Android Animation动画效果
- android Animation 动画效果
- android Animation 动画效果
- Android 动画效果animation
- Android动画(Animation)效果
- android Animation动画效果
- Android - Animation动画效果
- Android:Animation动画效果
- android动画效果Animation
- 动画效果Animation-android
- android-Animation动画效果
- Android学习笔记之动画效果Animation
- Android动画开发——Animation动画效果
- 《当程序员的那些狗日日子》(五十三)破局(下)
- 《Oracle编程艺术》学习笔记(15)-事务原子性
- Half-space Hyperplane
- 《Oracle编程艺术》学习笔记(16)-事务持久性
- 《Oracle编程艺术》学习笔记(17)-DEFERRABLE约束
- android学习——android Animation 动画效果
- Debug 运行正常但 Release 失败的问题,Debug 和 Release 编译方式的本质区别
- 《Oracle编程艺术》学习笔记(18)-REDO和UNDO
- java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决办法
- IOS多线程开发之GCD
- SQLite入门与分析(一)---简介
- VC combobox 的使用(添加、删除、插入等)
- C++中构造函数与析构函数的调用顺序
- Editplus vc6.0编译运行环境