当前位置: 代码迷 >> Android >> Android36_Animations施用(四)
  详细解决方案

Android36_Animations施用(四)

热度:104   发布时间:2016-05-01 19:18:07.0
Android36_Animations使用(四)

?

一、LayoutAnimationsContrlller的使用方法

?????? LayoutAnimationsContrlller可以用于实现使多个控件按顺序一个一个的显示。

?????? ?????? 1)LayoutAnimationsContrlller用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果。

?????? ?????? 2)每一个控件都有相同的动画效果。

?????? ?????? 3)控件的动画效果可以在不同的时间显示出来。

?????? ?????? 4)LayoutAnimationsContrlller可以在xml文件当中设置,以可以在代码当中进行设置。

二、ListViewAnimaions结合使用

?????? 1.xml当中使用LayoutAnimationsController

????????????? 1)res/anim文件夹下创建一个名为list_anim_layout.xml文件:

???????????????????? android:dylay- 动画间隔时间;

???????????????????? android:animationOrder- 动画执行的循序(normal:顺序,random:随机,reverse:反向显示)

???????????????????? android:animation– 引用动画效果文件

<layoutAnimation 	xmlns:android="http://schemas.android.com/apk/res/android"	android:delay="0.5"	android:animationOrder="normal"	android:animation="@anim/list_anim"/>?

? ? ? ? ? ? ? 2)在布局文件当中为ListVIew添加如下配置:

android:layoutAnimation="@anim/list_anim_layout"

??完整代码:


?List_anim_layout.xml

<?xml version="1.0" encoding="utf-8"?><layoutAnimation 	xmlns:android="http://schemas.android.com/apk/res/android"	android:delay="0.5"	android:animationOrder="normal"	android:animation="@anim/list_anim"/>

?List_anim.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"	android:interpolator="@android:anim/accelerate_interpolator"	android:shareInterpolator="true">	<alpha		android:fromAlpha="0.0"		android:toAlpha="1.0"		android:duration="1000"/></set>

?Main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >	<ListView 		android:id="@id/android:list"    	android:layout_width="fill_parent"    	android:layout_height="wrap_content"    	android:scrollbars="vertical"    	android:layoutAnimation="@anim/list_anim_layout"/>    <Button     	android:id="@+id/button"    	android:layout_width="fill_parent"    	android:layout_height="wrap_content"    	android:text="测试"/></LinearLayout>?

Item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"	android:layout_width="fill_parent" 	android:layout_height="fill_parent"	android:orientation="horizontal" 	android:paddingLeft="10dip"	android:paddingRight="10dip" 	android:paddingTop="1dip"	android:paddingBottom="1dip">	<TextView android:id="@+id/name" 		android:layout_width="180dip"		android:layout_height="30dip" 		android:textSize="5pt"		android:singleLine="true" />	<TextView android:id="@+id/sex" 		android:layout_width="fill_parent"		android:layout_height="fill_parent" 		android:textSize="5pt" 		android:singleLine="true"/></LinearLayout>?

AnimationsActivity.java

package com.android.activity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;public class AnimationsActivity extends ListActivity {	private Button button = null;	private ListView listView = null;	@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        listView = getListView();        button = (Button)findViewById(R.id.button);        button.setOnClickListener(new ButtonListener());    }	private ListAdapter createListAdapter() {		List<HashMap<String,String>> list = 			new ArrayList<HashMap<String,String>>();		HashMap<String,String> m1 = new HashMap<String,String>();		m1.put("name", "bauble");		m1.put("sex", "male");		HashMap<String,String> m2 = new HashMap<String,String>();		m2.put("name", "Allorry");		m2.put("sex", "male");		HashMap<String,String> m3 = new HashMap<String,String>();		m3.put("name", "Allotory");		m3.put("sex", "male");		HashMap<String,String> m4 = new HashMap<String,String>();		m4.put("name", "boolbe");		m4.put("sex", "male");		list.add(m1);		list.add(m2);		list.add(m3);		list.add(m4);		SimpleAdapter simpleAdapter = new SimpleAdapter(				this,list,R.layout.item,new String[]{"name","sex"},				new int[]{R.id.name,R.id.sex});		return simpleAdapter;	}	private class ButtonListener implements OnClickListener{		public void onClick(View v) {			listView.setAdapter(createListAdapter());		}	}}?

?运行结果:每一个item都是淡入淡出的按顺序显示。

2.在代码当中使用LayoutAnimationsController

? ? ? ? 对于在代码中使用LayoutAnimationsController,只不过去掉了list_anim_layout.xml这个文件,以及listview当中的

android:layoutAnimation="@anim/list_anim_layout"

这句。将animation的布局设置更改到了ButtonListener代码当中进行。

? ? ? ?1) 创建一个Animation对象:可以通过装载xml文件,或者是直接使用Animation的构造方法创建Animation对象;

Animation animation = (Animation)AnimationUtils.loadAnimation(	AnimationsActivity.this, R.anim.list_anim);?

2) 创建LayoutAnimationController对象:??

LayoutAnimationController controller = new LayoutAnimationController(animation);?

3) 设置控件的显示顺序以及延迟时间:?

controller.setOrder(LayoutAnimationController.ORDER_NORMAL);controller.setDelay(0.5f);

?? ? ? ?4)ListView设置LayoutAnimationController属性:

listView.setLayoutAnimation(controller);

?

三、AnimationListener的使用方法

?????? 1.AnimationListener是一个监听器,该监听器在动画执行的各个阶段会得到通知,从而调用相应的方法;

?????? 2.AnimationListener主要包括如下三个方法:

????????????? ·onAnimationEnd(Animation animation)- 当动画结束时调用

????????????? ·onAnimationRepeat(Animationanimation) - 当动画重复时调用

????????????? ·onAniamtionStart(Animationanimation) - 当动画启动时调用

实例:

Main.xml?

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"	android:id="@+id/layout"	android:orientation="vertical" 	android:layout_width="fill_parent"	android:layout_height="fill_parent">	<Button android:id="@+id/addButton" 		android:layout_width="fill_parent"		android:layout_height="wrap_content" 		android:layout_alignParentBottom="true"		android:text="添加图片" />	<Button android:id="@+id/deleteButton" 		android:layout_width="fill_parent"		android:layout_height="wrap_content" 		android:layout_above="@id/addButton"		android:text="删除图片" />	<ImageView android:id="@+id/image"		android:layout_width="wrap_content" 		android:layout_height="wrap_content"		android:layout_centerInParent="true" 		android:layout_marginTop="100dip"		android:src="@drawable/image" /></RelativeLayout>

?AnimationListenerActivity.java

package com.android.activity;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.Animation.AnimationListener;import android.widget.Button;import android.widget.ImageView;public class AnimationListenerActivity extends Activity {	private Button addButton = null;	private Button deleteButton = null;	private ImageView imageView = null;	private ViewGroup viewGroup = null;	@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        addButton = (Button)findViewById(R.id.addButton);        deleteButton = (Button)findViewById(R.id.deleteButton);        imageView = (ImageView)findViewById(R.id.image);        //LinearLayout下的一组控件        viewGroup = (ViewGroup)findViewById(R.id.layout);        addButton.setOnClickListener(new AddButtonListener());        deleteButton.setOnClickListener(new DeleteButtonListener());    }	private class AddButtonListener implements OnClickListener{		public void onClick(View v) {			//淡入			AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f);			animation.setDuration(1000);			animation.setStartOffset(500);			//创建一个新的ImageView			ImageView newImageView = new ImageView(				AnimationListenerActivity.this);			newImageView.setImageResource(R.drawable.image);			viewGroup.addView(newImageView,				new LayoutParams(					LayoutParams.FILL_PARENT,					LayoutParams.WRAP_CONTENT));			newImageView.startAnimation(animation);		}	}	private class DeleteButtonListener implements OnClickListener{		public void onClick(View v) {			//淡出			AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);			animation.setDuration(1000);			animation.setStartOffset(500);			//为Aniamtion对象设置监听器			animation.setAnimationListener(				new RemoveAnimationListener());			imageView.startAnimation(animation);		}	}	private class RemoveAnimationListener implements AnimationListener{		//动画效果执行完时remove		public void onAnimationEnd(Animation animation) {			System.out.println("onAnimationEnd");			viewGroup.removeView(imageView);		}		public void onAnimationRepeat(Animation animation) {			System.out.println("onAnimationRepeat");		}		public void onAnimationStart(Animation animation) {			System.out.println("onAnimationStart");		}	}}

?运行结果:

删除时慢慢淡出,添加时慢慢淡入

  相关解决方案