第二十七讲:Android之Animation(二)

勿以恶小而为之,勿以善小而不为。惟贤惟德,能服于人。—— 刘  备

本讲内容:Animation 动画

一、Interpolator 插值器 (定义动画变化的速率)         我们也可以自定义的插值器

Interpolator对象 资源ID 功能作用
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 先加速再减速
AccelerateInterpolator @android:anim/accelerate_interpolator 加速
AnticipateInterpolator @android:anim/anticipate_interpolator 先回退一小步然后加速前进
AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator 在上一个基础上超出终点一小步再回到终点
BounceInterpolator @android:anim/bounce_interpolator 最后阶段弹球效果
CycleInterpolator @android:anim/cycle_interpolator 周期运动
DecelerateInterpolator @android:anim/decelerate_interpolator 减速
LinearInterpolator @android:anim/linear_interpolator 匀速
OvershootInterpolator @android:anim/overshoot_interpolator 速到达终点并超出一小步最后回到终点

二、上一讲我们用编码实现动画效果,本讲将以XML形式定义动画

我们通过一个例子感受一下,代码的讲解都写在注释里了

下面是res/layout/activity_main.xml
布局文件:

<LinearLayout 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:orientation="vertical"
    tools:context="com.example.text.MainActivity$PlaceholderFragment" >
 <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/c1"
        android:layout_weight="1"/>
   <Button
       android:id="@+id/translate"
       android:layout_width="match_parent"
	   android:layout_height="wrap_content"
	   android:text="测试translate动画效果" />
   <Button
       android:id="@+id/alpha"
       android:layout_width="match_parent"
	   android:layout_height="wrap_content"
	   android:text="测试alpha动画效果" />
   <Button
       android:id="@+id/rotate"
       android:layout_width="match_parent"
	   android:layout_height="wrap_content"
	   android:text="测试rotate动画效果" />
   <Button
       android:id="@+id/scale"
       android:layout_width="match_parent"
	   android:layout_height="wrap_content"
	   android:text="测试scale动画效果" />

</LinearLayout>

在res文件下新建一个文件名为anim

下面是新建res/anim/alpha.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/accelerate_interpolator">
	<scale android:fromXScale="1.0"
		android:toXScale="0.0"
		android:fromYScale="1.0"
		android:toYScale="0.0"
		android:pivotX="50%"
		android:pivotY="50%"
		android:duration="2000" />
</set>
android:interpolator="@android:anim/accelerate_interpolator"   <span style="font-family: Arial; font-size: 14px; line-height: 26px;">定义一个加速插值器</span>

下面是新建res/anim/rotate.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/accelerate_interpolator">
	<rotate android:fromDegrees="0"
		android:toDegrees="-360"
		android:pivotX="50%"
		android:pivotY="50%"
		android:duration="5000" />
</set>

下面是新建res/anim/scale.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/accelerate_interpolator">
	<scale android:fromXScale="1.0"
		android:toXScale="0.0"
		android:fromYScale="1.0"
		android:toYScale="0.0"
		android:pivotX="50%"
		android:pivotY="50%"
		android:duration="2000" />
</set>

下面是新建res/anim/translate.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:fromXDelta="50%"
		android:toXDelta="100%"
		android:fromYDelta="0%"
		android:toYDelta="100%"
		android:duration="2000" />
</set>

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity implements OnClickListener {
	private Button translate;
	private Button alpha;
	private Button rotate;
	private Button scale;
	private ImageView image;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		image = (ImageView) findViewById(R.id.image);
		translate = (Button) findViewById(R.id.translate);
		alpha = (Button) findViewById(R.id.alpha);
		rotate = (Button) findViewById(R.id.rotate);
		scale = (Button) findViewById(R.id.scale);
		translate.setOnClickListener(this);
		alpha.setOnClickListener(this);
		rotate.setOnClickListener(this);
		scale.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.translate:
			// 使用AnimationUtils装载动画设置文件
			Animation anim1 = (Animation) AnimationUtils.loadAnimation(MainActivity.this, R.anim.translate);
			image.startAnimation(anim1);
			break;
		case R.id.alpha:
			Animation anim2 = AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha);
			image.startAnimation(anim2);
			break;
		case R.id.rotate:
			Animation anim3 = AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate);
			image.startAnimation(anim3);
			break;
		case R.id.scale:
			Animation anim4 = AnimationUtils.loadAnimation(MainActivity.this,R.anim.scale);
			image.startAnimation(anim4);
			break;
		}
	}
}

下面是运行结果:

本讲到这里,谢谢大家!

时间: 2024-11-03 21:35:29

第二十七讲:Android之Animation(二)的相关文章

第二十六讲:Android之Animation

懒惰象生锈一样,比操劳更能消耗身体:经常用的钥匙,总是亮闪闪的. -- 富兰克林 本讲内容:Animation 动画 一.Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由程序运算得到.另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画.和放电影的机制很相似,下面我们逐个学习. 下面引用官方文档 从图我们可以知道Animation的直接子类有AlphaAnimation.Anim

Android学习笔记二十七之ExpandableListView可折叠列表和StackView栈视图

Android学习笔记二十七之ExpandableListView可折叠列表和StackView栈视图 ExpandableListView可折叠列表 这一节我们介绍第三个用适配器的控件,ExpandableListView可折叠列表.这个控件可以实现我们在QQ中非常常见好友分组功能,ExpandableListView是ListView的子类,用法跟ListView差不多,下面我们来学习这个控件的基本使用: 常用属性: android:childDivider:指定各组内子类表项之间的分隔条,

Android学习Scroller(二)

MainActivity如下: package cc.testscroller1; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.View.OnClick

(三十九)android动画 Animation四大属性 详解(转载:http://www.android100.org/html/201304/25/2295.html)

一.Animation主要有四大属性,分别是淡入淡出,绕轴旋转,变化大小,位移变化 二.四大属性的共同的方法 1.setDuration(long durationMills):设置动画持续的时间(单位:毫秒) 2.setFillAfter(boolean fillAfter):如果fillAfter的值为true,则动画执行后看,控件将停留在执行结束的状态 3.setFillBefore(boolean fillBefore):如果fillBefore的值为true,则动画执行后看,控件将停留

android 动画animation

一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 Java Code代码中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸伸缩动画效果 TranslateAnimation 画面转换位置移动动画效果 RotateAnim

安卓开发_浅谈Android动画(二)

在学习了四个基本动画之后,现在要学习一些更有用的效果 先给出所有的动画xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <set xmlns:android="http://schemas.android.com/apk/res/android" > 3 4 <alpha 5 android:duration="3000" 6 android:fromA

android Graphics(二):路径及文字

前言:今天项目进入攻关期,他们改Bug要改疯掉了,主管为了激励大家,给大家发了一封邮件,讲到他对项目和学习的理解,一个很好的图形模型,分享给大家,如图在下面给出:(不便给出原文,我仅做转述)无论是学习还是其它回报,它的回报曲线如下 :蓝色是(成长+付出),红色是回报.有多久可以达到这个红心,要看我们自已的努力,付出了多少专注与汗水.红色线的上挑,是前期厚积薄发的过程,先有异常低调的学习和努力,才会有海阔天空的心态和能量. 相关文章: 1.<android Graphics(一):概述及基本几何图

Android异步处理二:使用AsyncTask异步更新UI界面

Android异步处理二:使用AsyncTask异步更新UI界面 - lzc的专栏 - 博客频道 - CSDN.NET 在<Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面>中,我们使用Thread+Handler的方式实现了异步更新UI界面,这一篇中,我们介绍一种更为简洁的实现方式:使用AsyncTask异步更新UI界面. 概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的

Android动画Animation的两种加载执行方式

本文以简单的AlphaAnimation("淡入淡出(透明度改变)"动画)为例,简单的说明Android动画Animation的两种加载执行方法: (1) 直接写Java代码,制作Android动画. (2) 写XML配置文件,加载XML资源文件执行. 其实这两者是一致的.要知道,在Android中,凡是可以在XML文件完成的View,代码亦可完全写出来. 现在先给出一个Java代码完成的动画AlphaAnimation,AlphaAnimation功能简单,简言之,可以让一个View