安卓开发_浅谈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移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给 ...
 
随机推荐
- Turtle Online:致力于打造超接地气的PC前端架构,组件+API,快速搭建前端开发
			
架构创作初衷 每当新开一个项目时,都会绞尽脑汁去考虑采用哪种框架:requirejs/seajs.jquery/zepto.backbone.easeUI/Bootstrap/AngularJS……, ...
 - JavaScript面试库
			
1.将一段字符串转成驼峰命名法. var str = "web-kit-index"; function to(str){ var j = str.split("-&qu ...
 - HT图形组件设计之道(一)
			
HT for Web简称HT提供了涵盖通用组件.2D拓扑图形组件以及3D引擎的一站式解决方案,正如Hightopo官网所表达的我们希望提供:Everything you need to create ...
 - 转载:第四弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!
			
感谢大家支持!博卡君周末休息了两天,今天又回到战斗状态了.上周五晚上微信放出官方工具和教程了,推荐程序猿小伙伴们都去试一试,结合教程和代码,写写自己的 demo 也不错. 闲话不多说,开始更新! 第七 ...
 - python使用SMTP发送邮件
			
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP协议簇,它 ...
 - Lucene-Analyzer
			
Lucene文本解析器实现 把一段文本信息拆分成多个分词,我们都知道搜索引擎是通过分词检索的,文本解析器的好坏直接决定了搜索的精度和搜索的速度. 1.简单的Demo private static fi ...
 - 在android设备上调试ionic应用
			
方法1: ionic run android -l -c 将会在console中输出日志信息 方法2: (1).使用usb连接android设备,并打开android设备的调试功能 (2).在chro ...
 - 2016ASP.NET使用QQ邮箱发送信息最全+无错误
			
public static bool SendEmail(string mailTo, string mailSubject, string mailContent) { // 设置发送方的邮件信息, ...
 - Error generating Swagger server (Python Flask) from Swagger editor
			
1down votefavorite http://stackoverflow.com/questions/36416679/error-generating-swagger-server-pyt ...
 - 不经意间网易开源镜像去掉了FreeBSD的镜像
			
http://mirrors.163.com/ FreeBSD已经到了这么不招人待见的地步了么? 网易曾经可是FreeBSD的大户啊.