android学习日记22--Animation动画简介
Animation动画主要有两种:帧动画(Frame Animation)和补间动画(Tween Animation)。
补间动画主要包括对位置、角度、尺寸等属性的变化,而帧动画则是通过若干帧图片轮流切换显示的。
1、帧动画
按顺序显示事先准备好的图片,跟动漫类似。主要用到的类AnimationDrawable,每个帧都是AnimationDrawable对象。
定义帧动画可以在代码直接进行。也可以通过XML文件定义,定义帧动画的文件存放在res/anim目录下。XML指定帧出现的顺序
及每个帧的持续时间。
帧动画XML主要标记和属性如下:
需要强调的是:启动Frame Animation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中
AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。这里实在拖曳事件中实现的。
AnimationDrawable的主要方法如下:
帧动画使用例子
完整帧动画XML(frame_ani.xml)代码:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/fish1" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish1" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish2" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish3" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish4" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish5" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish6" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish7" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish8" android:duration="200" android:visible="true"/>
<item android:drawable="@drawable/fish8" android:duration="200" android:visible="true"/>
</animation-list>
启动帧动画JAVA代码:
@Override
public void onClick(View v) { //重写onClick方法
ImageView iv = (ImageView)findViewById(R.id.iv);
iv.setBackgroundResource(R.anim.frame_ani);
AnimationDrawable ad = (AnimationDrawable)iv.getBackground();
ad.start(); //启动AnimationDrawable
}
点击按钮,启动帧动画,可以看见不同fish图片的切换,鱼儿在游动(自己脑补哈)。
2、补间动画
补间动画作用于View视图,主要包括对View对象的位置、尺寸、旋转角度、透明度的变化。补间动画涉及的类主要有
Animation、AnimationSet等。
补间动画同帧动画可以在代码直接进行。也可以通过XML文件定义,推荐用XML,因为这样可读性比较高和利于扩展。
XML文件存放在res/anim下。
补间动画XML几种变化标记和属性如下:
公有属性如下:
补间动画使用例子:
完整补间动画XML代码:
<?xml version="1.0" encoding="utf-8"?><!-- XML的版本以及编码方式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="6000"
/> <!-- 透明度的变换 -->
<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="9000"
/> <!-- 尺寸的变换 -->
<translate
android:fromXDelta="30"
android:toXDelta="0"
android:fromYDelta="30"
android:toYDelta="0"
android:duration="10000"
/> <!-- 尺位置的变换 -->
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="10000"
/> <!-- 旋转变换 -->
</set>
启动补间动画JAVA代码:
@Override
public void onClick(View v) { //重写onClick方法
ImageView iv = (ImageView)findViewById(R.id.iv);
Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.tween_ani);
iv.startAnimation(animation); //启动动画
}
点击按钮,启动补间动画,可以看见螃蟹从中心慢慢旋转显现出来。
android学习日记22--Animation动画简介的更多相关文章
- android学习日记03--常用控件Dialog
常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- android学习日记03--常用控件checkbox/radiobutton
常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...
- android学习日记03--常用控件button/imagebutton
常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...
- Android中xml设置Animation动画效果详解
在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...
- android学习日记02--Activity简介
一.Activity活动 学习Android,第一个都会接触Activity滴,Activity表示一个用户界面,是Android应用程序的入口,可以同时有多个界面,但只会显示栈顶的界面. Activ ...
- android学习日记18--Adapter简介
一.Adapter 1.简述 最近学的GridView和Gallery 都有用到Adapter适配器,发现它貌似蛮重要的.专门上网搜了下有关Adapter的资料.android绝大多数应用是JAVA语 ...
- transition和animation动画简介
本文介绍CSS动画的两大组成部分:transition和animation.我不打算给出每一条属性的详尽介绍,那样可以写一本书.这篇文章只是一个简介,帮助初学者了解全貌,同时又是一个快速指南,当你想不 ...
- 【Android学习日记】
(一) Android 开发基础 1 Android平台的特性 1) 应用程序框架支持组建的重用和替换,包括打电话应用程序.文件管理器等. 2) Dalvik虚拟机专门为移动设备做了优化,Dalv ...
随机推荐
- Arch 常用工具
一.网络浏览 pacman -S firefox firefox-i18n注:该命令中的前者为 Firefox 主程序,后者为语言包.pacman -S opera 二.图像编辑 pacman -S ...
- light开发框架
- (九)学习CSS之margin属性
参考: 所有浏览器都支持 margin 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit". 定义和用法 margi ...
- Jquery Table 的基本操作
Jquery 操作 Html Table 是很方便的,这里对表格的基本操作进行一下简单的总结. 首先建立一个通用的表格css 和一个 表格Table: table { border-collapse: ...
- Kettle定时执行(ETL工具)【转】
1,Kettle跨平台使用. 例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下: 1)进入到Kettle部署的路径 ...
- HDU 3001 Travelling 3进制状压dp
题意:10个点,若干条边,边有花费,每个点最多走两次,求走过所有点,花费最少 分析:因为每个点最多走两次,所以联想到3进制,然后枚举状态,就行了(我也是照着网上大神的代码写的) #include &l ...
- 【原】Redis分区
Redis高级篇 分区 为什么分区? Redis中的分区主要有两个目的: 允许用多台机器的内存存放更大的数据集.如果没有分区,那么你只能存放单台机器内存的最大值的数据集. 允许用多核和多台机器提高计算 ...
- 【译】 AWK教程指南 11递归程序
awk 中除了函数的参数列表(Argument List)上的参数(Arguments)外,所有变量不管于何处出现,全被视为全局变量.其生命持续至程序结束——该变量不论在function外或 func ...
- CSS换行:word-wrap、word-break和text-wrap区别
一.word-wrap:允许对长的不可分割的单词进行分割并换行到下一行.(中英文处理效果一样) word-wrap有两个取值: 1.word-wrap: normal:只在允许的断字点换行(浏览器保持 ...
- Magento 重新安装的方法
如果之前已经成功安装Magento, 不必再下载Magento进行重新安装,很多朋友删掉所有程序文件然后再上传一个magento程序包进行重新安 装, 这样做很耗时间. 其实只需把magento的根目 ...