Android系统提供了两种实现动画的方式,一种是补间动画(Tween Animation),另一种是帧动画(Frame Animation)。补间动画可以实现View组件的移动、放大、缩小以及渐变等效果,帧动画则提供了一种逐帧播放图片的动画方式。无论是补间动画还是帧动画,Android均为其进行了封装,提供了非常简单的应用接口。

Android系统提供了4种动画效果,分别是: AlphaAnimation(透明度动画效果 );RotateAnimation(旋转动画效果);ScaleAnimation(缩放动画效果 );  TranslateAnimation(位移动画效果 )我做了2个动画效果从单一个一个动画,到复合动画,有源代码可以下载。

第一个是一个简单位移动画:点击打开链接

第二个是旋转+透明动画:点击打开链接

AlphaAnimation(透明度动画效果 ) RotateAnimation(旋转动画效果) ScaleAnimation(缩放动画效果 ) TranslateAnimation(位移动画效果 )

java中对应的方法
setDuration 设置持续时间
startNow 立刻启动动画
start 启动动画
 cancel 取消动画
setRepeatCount 设置重复次数
setFillEnabled 使能填充效果
setFillBefore 设置起始填充
setFillAfter 设置终止填充
setRepeatMode 设置重复模式
setStartOffset 设置启动时间

一:TranslateAnimation类:位置变化动画

TranslateAnimation类是Android系统中的位置变化动画类,用于控制View对象的位置变化,该类继承于Animation类。TranslateAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是TranslateAnimation构造方法。

【基本语法】public TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

【参数说明】

fromXDelta:位置变化的起始点X坐标。

toXDelta:位置变化的结束点X坐标。

fromYDelta:位置变化的起始点Y坐标。

toYDelta:位置变化的结束点Y坐标。

二:RotateAnimation类:旋转变化动画类

RotateAnimation类是Android系统中的旋转变化动画类,用于控制View对象的旋转动作,该类继承于Animation类。RotateAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是RotateAnimation构造方法。

【基本语法】public RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

【参数说明】

fromDegrees:旋转的开始角度。

toDegrees:旋转的结束角度。

pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotXValue:X坐标的伸缩值。

pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotYValue:Y坐标的伸缩值。

三:ScaleAnimation类:尺寸变化动画

ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类。ScaleAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是ScaleAnimation构造方法。

    【基本语法】public ScaleAnimation (float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

【参数说明】

fromX:起始X坐标上的伸缩尺寸。

toX:结束X坐标上的伸缩尺寸。

fromY:起始Y坐标上的伸缩尺寸。

toY:结束Y坐标上的伸缩尺寸。

pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotXValue:X坐标的伸缩值。

pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotYValue:Y坐标的伸缩值。

四:AlphaAnimation类:透明度变化动画类

AlphaAnimation类是Android系统中的透明度变化动画类,用于控制View对象的透明度变化,该类继承于Animation类。AlphaAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是AlphaAnimation构造方法。

    【基本语法】public AlphaAnimation (float fromAlpha, float toAlpha)

【参数说明】

fromAlpha:开始时刻的透明度,取值范围0~1。

toAlpha:结束时刻的透明度,取值范围0~1。

五:AnimationSet类:动画集合类

AnimationSet类是Android系统中的动画集合类,用于控制View对象进行多个动作的组合,该类继承于Animation类。AnimationSet类中的很多方法都与Animation类一致,该类中最常用的方法便是addAnimation方法,该方法用于为动画集合对象添加动画对象。

第一个是一个简单动画,只实现了TranslateAnimation(位移动画效果 ):

MainActivity.java中的代码:

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) { //重载onCreate方法
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象
Button btn1=(Button)findViewById(R.id.button1); //按钮对象1(开始动画) 
Button btn2=(Button)findViewById(R.id.button2); //按钮对象 2(停止动画)
final Animation translateAnimation=new TranslateAnimation(0,300,0,300);//移动动画效果

btn1.setOnClickListener(new View.OnClickListener() { //设置监听器

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
translateAnimation.setDuration(3000); //设置动画持续时间
image.setAnimation(translateAnimation); //设置动画效果
translateAnimation.startNow(); //启动动画
}
});
btn2.setOnClickListener(new View.OnClickListener() { //设置监听器

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
translateAnimation.cancel(); /
/取消动画执行
}
});
}
}

</pre><pre>
<pre name="code" class="java">activity_main.xml中的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/kaishi" /><Buttonandroid:id="@+id/button2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@+id/button1"android:text="@string/dingzhi" /><ImageViewandroid:id="@+id/imageView1"android:layout_width="100dp"android:layout_height="100dp"android:layout_alignLeft="@+id/button2"android:layout_below="@+id/button2"android:src="@drawable/splash" /></RelativeLayout>

在这段代码中,首先初始化了一个移动的动画效果translateAnimation。然后,在第一个按钮监听器中,通过setDuration方法设置动画持续时间3333毫秒,并为image对象设置动画效果,最后使用startNow方法启动动画效果。在第二个按钮监听器中,调用cancel方法取消动画执行。读者执行这段代码,可以在手机屏幕上看到如图9.2所示的显示效果。当点击"执行动画"按钮时,图片开始移动;当点击"停止动画"按钮时,动画被取消,重新返回起始位置。

第一个动画运行结果如下图:

在做第二个动画之前要先学一下AnimationSet类(动画集合类):

AnimationSet类是Android系统中的动画集合类,用于控制View对象进行多个动作的组合,该类继承于Animation类。AnimationSet类中的很多方法都与Animation类一致,该类中最常用的方法便是addAnimation方法,该方法用于为动画集合对象添加动画对象。(可以和第一个对比一下,AnimationSet就是面向对象的。)

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView image=(ImageView) findViewById(R.id.imageView1);//对象imageView1

Button btn1=(Button)findViewById(R.id.button1);//按钮对象(开始动画)
Button btn2=(Button)findViewById(R.id.button2);//按钮对象(停止动画)
final Animation rotateAnimation = new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//设置旋转  
final Animation alphaAnimation= new AlphaAnimation(0.1f,1.0f);//设置透明
btn1.setOnClickListener(new View.OnClickListener() {//button1的监听

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

rotateAnimation.setDuration(10000);//旋转时间
alphaAnimation.setDuration(7000);//透明时间
AnimationSet set=new AnimationSet(true);//AnimationSet类,创建对象set
set.addAnimation(rotateAnimation);//给set对象添加旋转效果
set.addAnimation(alphaAnimation);//给set对象添加透明效果
image.setAnimation(set);//设置动画
set.startNow();//开始

}

});
btn2.setOnClickListener(new View.OnClickListener() { //button2的监听

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
set.cancel();// 停止
//
}
});
}

XML文件就不写了,和第一个一模一样。。

android—补间动画(Tween Animation)旋转的血轮眼相关推荐

  1. Android 补间动画(Tween Animation)

    Tween Animation(补间动画): Tween动画,通过对View的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可以采用XML来做也可以采用编 ...

  2. android 补间动画有停顿,Android动画原理分析(一)----补间动画

    1.基本特点 补间动画(Tween动画),是android最早的动画框架,从Android1.0开始就有. 功能:可以实现移动.旋转.缩放.渐变四种效果以及这四种效果的组合形式. 实现形式:xml和代 ...

  3. Android平移补间动画,Android 补间动画之平移动画TranslateAnimation

    Android动画系列 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 duration 时间 f ...

  4. android image 位移动画_「translateanimation」Android 补间动画之平移动画TranslateAnimation - seo实验室...

    translateanimation 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 durati ...

  5. Android补间动画

    概述 本篇博客基于<Android开发艺术探索>,将会介绍以下两种动画: 补间动画 帧动画 事实上帧动画也是补间动画的一种,但是它们的使用方式略有不同,所以将它们分开介绍. 一.补间动画 ...

  6. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  7. Android补间动画笔记

    布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  8. android 属性动画 补间动画,每日一道面试题(第7期)---Android补间动画与属性动画的区别...

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  9. Android 补间动画

    补间动画使用很简单,几行代码便能实现效果,上图上代码: xml很简单,不用说,先给每个按钮加上点击监听 findViewById(R.id.rotateBtn).setOnClickListener( ...

最新文章

  1. 一个ioc例子jdk和spring版本导致问题
  2. CodeForces - 817F MEX Queries(线段树lazy序)
  3. OpenGL——二维几何变换
  4. BGP 路由表即将突破 768k
  5. duplicate database的时候,rman连接 auxiliary database的后状态不正确
  6. devops项目经理_DevOps:如何避免交接导致项目死亡
  7. 大数据之-Hadoop之HDFS的API操作_定位读取文件_只读取某个block的内容_案例---大数据之hadoop工作笔记0065
  8. 安卓快速排序与冒泡排序
  9. SQL Server添加字段注释表注释comments,Oracle与Sql Server添加注释语法区别
  10. a标签去掉下划线以及字体颜色
  11. 【渝粤教育】电大中专跨境电子商务理论与实务 (32)作业 题库
  12. 李瑞霖4.13黄金走势短线放空原油能否筑底反弹?行情涨跌分析
  13. 如何在SVN中忽略某个文件或文件夹
  14. 我的世界服务器java启动脚本_我的世界服务器开服bat文件分享 常见脚本
  15. 组件化之路 - ViewModel一知半解
  16. ubnutu下载网易云音乐
  17. MATLAB 非线性规划
  18. 计算机应用可分为哪两类,自考计算机应用基础试题及参考答案
  19. [转]2004手机游戏年终点评
  20. windows下用PartitionMagic 8.0删除linux分区后的处理

热门文章

  1. A,B,C类基金我们应该怎么买
  2. IOS开发(22)之生成IPA文件并安装到越狱后的真机上
  3. 基于Duffing系统的分数阶混沌研究【基于matlab的动力学模型学习笔记_5】
  4. emacs+prelude问题配置
  5. 中国最好自行车品牌大全及价格辐轮王世界碳纤维自行车品牌排行榜
  6. 企业信息化必选的管理软件
  7. 天源迪科oa_企业综合信息系统
  8. mmWaveLink Framework
  9. php 的与或非,php与或非【货币问答】- php与或非所有答案 - 联合货币
  10. 体验Apple II BASIC