安卓开发_浅谈Android动画(三)
一、LayoutAnimation布局动画
用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果
在res-anim文件下新建一个动画xml文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" > <scale
android:duration=""
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration=""
android:fromAlpha=""
android:toAlpha="1.0" />
</set>
zoom_in
list为列表
//布局动画控制器
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this,R.anim.zoom_in));
//动画方式
lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
//加载布局动画
list.setLayoutAnimation(lac);
//开始动画
list.startLayoutAnimation();
//为列表视图中选中的项添加响应事件
效果图:

全部代码:
package other; import com.example.allcode.R; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast; public class Donghua_List extends Activity{
private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.donghua_layout); list = (ListView) findViewById(R.id.listView1);
//布局动画控制器
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this,R.anim.zoom_in));
//动画方式
lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
//加载布局动画
list.setLayoutAnimation(lac);
//开始动画
list.startLayoutAnimation();
//为列表视图中选中的项添加响应事件
list.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View arg1, int pos,
long id) {
// TODO Auto-generated method stub
String result = parent.getItemAtPosition(pos).toString(); //获取选择项的值
Toast.makeText(Donghua_List.this, "点击了 "+result, Toast.LENGTH_SHORT).show();//输出选中项消息
}
});
} }
Donghua_list.java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ListView
android:id="@+id/listView1"
android:entries="@array/list" android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView> </LinearLayout>
donghua_layout.xml
------------------------------------------------------------------------------------------------------------------
二、Drawable动画(帧动画)
即多张连续的动画顺序播放
核心类:AnimationDrawable
使用步骤:
1、在res下创建drawable文件夹创建资源文件 xx.xml (名字随便取)
有个属性 android:oneshot="false" 判断是否重复播放帧动画,默认false 表示循环播放,true表示只播放一次
<?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/refresh_001" android:duration="" />
<item android:drawable="@drawable/refresh_002" android:duration="" />
<item android:drawable="@drawable/refresh_003" android:duration="" />
<item android:drawable="@drawable/refresh_004" android:duration="" />
<item android:drawable="@drawable/refresh_005" android:duration="" />
<item android:drawable="@drawable/refresh_006" android:duration="" />
<item android:drawable="@drawable/refresh_007" android:duration="" />
<item android:drawable="@drawable/refresh_008" android:duration="" />
<item android:drawable="@drawable/refresh_009" android:duration="" />
<item android:drawable="@drawable/refresh_010" android:duration="" />
<item android:drawable="@drawable/refresh_011" android:duration="" />
<item android:drawable="@drawable/refresh_012" android:duration="" />
<item android:drawable="@drawable/refresh_013" android:duration="" />
<item android:drawable="@drawable/refresh_014" android:duration="" />
<item android:drawable="@drawable/refresh_015" android:duration="" />
<item android:drawable="@drawable/refresh_016" android:duration="" />
<item android:drawable="@drawable/refresh_017" android:duration="" />
<item android:drawable="@drawable/refresh_018" android:duration="" />
<item android:drawable="@drawable/refresh_019" android:duration="" />
<item android:drawable="@drawable/refresh_020" android:duration="" />
<item android:drawable="@drawable/refresh_021" android:duration="" />
<item android:drawable="@drawable/refresh_022" android:duration="" />
<item android:drawable="@drawable/refresh_023" android:duration="" />
<item android:drawable="@drawable/refresh_024" android:duration="" />
<item android:drawable="@drawable/refresh_025" android:duration="" />
<item android:drawable="@drawable/refresh_026" android:duration="" />
<item android:drawable="@drawable/refresh_027" android:duration="" />
<item android:drawable="@drawable/refresh_028" android:duration="" />
<item android:drawable="@drawable/refresh_029" android:duration="" />
<item android:drawable="@drawable/refresh_030" android:duration="" />
<item android:drawable="@drawable/refresh_031" android:duration="" />
<item android:drawable="@drawable/refresh_032" android:duration="" />
<item android:drawable="@drawable/refresh_033" android:duration="" />
<item android:drawable="@drawable/refresh_034" android:duration="" />
<item android:drawable="@drawable/refresh_035" android:duration="" />
<item android:drawable="@drawable/refresh_036" android:duration="" />
<item android:drawable="@drawable/refresh_037" android:duration="" />
<item android:drawable="@drawable/refresh_038" android:duration="" />
<item android:drawable="@drawable/refresh_039" android:duration="" />
<item android:drawable="@drawable/refresh_040" android:duration="" />
<item android:drawable="@drawable/refresh_041" android:duration="" />
<item android:drawable="@drawable/refresh_042" android:duration="" />
<item android:drawable="@drawable/refresh_043" android:duration="" />
<item android:drawable="@drawable/refresh_044" android:duration="" />
<item android:drawable="@drawable/refresh_045" android:duration="" />
<item android:drawable="@drawable/refresh_046" android:duration="" />
<item android:drawable="@drawable/refresh_047" android:duration="" />
<item android:drawable="@drawable/refresh_048" android:duration="" /> </animation-list>
2、布局文件
<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" > <ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:background="@drawable/refresh_001" /> </RelativeLayout>
activity_main.xml
3、使用AnimationDrawable 类
(1)找到要显示动画的ImageView控件
imageView = (ImageView) findViewById(R.id.imageView);
(2)给图片控件设置资源
imageView.setBackgroundResource(R.drawable.waiting_anim); //将帧动画资源文件作为View控件背景
(3)获取AnimationDrawable 类对象
AnimationDrawable rocketAnimation = (AnimationDrawable) imageView.getBackground(); //获取背景并强转成为帧动画对象
(4)启动动画
rocketAnimation.start();
效果图:

-------------------------------------------------------------------------------------------------------------------
动画汇总:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" > <scale
android:duration=""
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration=""
android:fromAlpha=""
android:toAlpha="1.0" />
</set>
zoom_in.xml 从右往左
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p"
android:toXDelta=""
android:duration=""/>
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="" />
</set>
push_left_in.xml从左往右
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="-100%" android:toXDelta="" android:duration="" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="" />
</set>
slide_top_to_bottom.xml 从上往下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"> <translate android:fromYDelta="100%" android:toXDelta="" android:duration="" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="" />
</set>
slide_bottom_to_top.xml从下往上
安卓开发_浅谈Android动画(三)的更多相关文章
- 安卓开发_浅谈Android动画(四)
Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1. ValueAnimator 基本属 ...
- 安卓开发_浅谈Android动画(二)
在学习了四个基本动画之后,现在要学习一些更有用的效果 先给出所有的动画xml <?xml version="1.0" encoding="utf-8"?& ...
- 安卓开发_浅谈Android动画(一)
动画效果,针对图片实现 现在学习四种基本的简单动画效果 一.Tween Animation共同属性 1.Duration:动画持续时间(毫秒单位) 2.fillAfter:设置为true,动画转化在动 ...
- 安卓开发_浅谈ListView(SimpleAdapter数组适配器)
安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...
- 安卓开发_浅谈ListView(自定义适配器)
ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...
- 安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...
- 安卓开发_浅谈OptionsMenus(选项菜单)
Android平台下所提供的菜单大体上可分为三类:选项菜单.上下文菜单和子菜单. 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单.但这个功能需要开 ...
- 安卓开发_浅谈Notification(通知栏)
Notification通知栏是显示在手机状态的消息,代表一种全局效果的通知 快速创建一个Notification的步骤简单可以分为以下四步: 第一步:通过getSystemService()方法得到 ...
- 安卓开发_浅谈AsyncTask
现在就来学习一下AsyncTask. 一.先介绍一下AsyncTask: 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给 ...
随机推荐
- 如何准备PMP考试?
东西在精,而不在多.话不多说,干货如下: 1.参加培训,不要持续时间太长,通常情况下3个月时间足够了:许多和我一起参加培训的学员,有时候准备6个月时间,反而没有3个月冲刺的时间考试结果好. 2.培训老 ...
- Android View绘制过程
Android的View绘制是从根节点(Activity是DecorView)开始,他是一个自上而下的过程.View的绘制经历三个过程:Measure.Layout.Draw.基本流程如下图: per ...
- ES6 Promise 接口
构造函数 new Promise(function(resolve, reject){}); 构造函数接受一个函数(executor)作为参数,该函数在返回 Promise 实例之前被调用.函数的两个 ...
- js转html实体
方法一: 用的浏览器内部转换器实现转换,方法是动态创建一个容器标签元素,如DIV,将要转换的字符串设置为这个元素的innerText,然后返回这个元素的innerHTML,即得到经过HTML编码转换的 ...
- UnWind Segue
iOS 6 和 Xcode 4.5 中添加了一个新特性叫做“Unwind Segue”. 使用Unwind Segue,可以方便的在Navigation Controller的Controllers之 ...
- I'm back for Machine Learning
Hi, Long time no see. Briefly, I plan to step into this new area, data analysis. In the past few yea ...
- HMM 自学教程(三)隐藏模式
本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...
- 学期总结ngu
不知不觉一年就过去了,真可谓光阴似箭,日月如梭,在这一年里,我成长了许多,懂得了如何跟队友合作,提高了我的交际能力,懂得了许多课本知识,增进了我的编写能力.最重要的是学会了总结经验,这无疑是我这一年里 ...
- 软件工程---阅读《构建之法》P384~391
-阅读<构建之法>P384~391后,我充分认识到软件工程师的职业道德的重要性,具体有: 原则1:公众 原则2:客户与雇主 原则3:产品 原则4:判断 原则5:管理 原则6:职业 原则7: ...
- P6 EPPM R16.1安装与配置指南(三)
P6 EPPM R16.1安装与配置指南(三) 解压:V137390-01.zip 修改 D:\P6_R161\p6suite\database\dbsetup.bat 的行 SET JAR_FI ...