安卓开发_浅谈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移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给 ...
随机推荐
- glassfish服务器默认的网页所在的位置
http://localhost:8080/ 默认打开的网页所在的位置 E:/glassfish-4.1/glassfish/domains/domain1/docroot/index.html
- LeetCode——Jump Game
Description: Given an array of non-negative integers, you are initially positioned at the first inde ...
- Android 定时器
Andorid定时器封装类 public class TimerUtil { private static final String TAG = "TimerUtil"; priv ...
- 通俗易懂的ListView讲解(Adapter、图、实例)
2016/4/5 17:22] 之前写listview其实写了很多次,但好像还是模模糊糊的感觉,直到今天准备写tab的时候被告诉说原理有像的地方,于是我就先来分析整理一下listview好了 先来 ...
- C#入门经典第五版之变量与表达式编码题训练
问题:编写一个控制台应用程序,要求用户输入4个int值,并显示它们的乘积.提示:可以使用Convert.ToDouble()命令,把用户在控制台上输入的数转换为double, 以此类推,转换成int命 ...
- HNU 13308 Help cupid
Help cupid Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13308&c ...
- 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转换为类型“System.Collections.Generic.IList`1
在WPF中DataGrid 选择事件中获取SelectedItems 报错如下 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转 ...
- 重新想象 Windows 8 Store Apps 系列文章索引
[源码下载][重新想象 Windows 8.1 Store Apps 系列文章] 重新想象 Windows 8 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...
- 线段树区间求最大值(点更新)---I Hate It
HDU 1754 Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的 ...
- 转载Quandl R Package
Quandl R Package 通过Quandl API可以快速准确地获取宏观经济数据.(https://www.quandl.com/docs/api) 分享两个国外的优秀网站 R和Python在 ...