`
Bauble
  • 浏览: 67350 次
  • 性别: Icon_minigender_1
  • 来自: Mercury
社区版块
存档分类
最新评论

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(Animation animation) - 当动画重复时调用

              ·onAniamtionStart(Animation animation) - 当动画启动时调用

实例:

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");
		}
	}
}

 运行结果:

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

  • 大小: 12.8 KB
  • 大小: 27.2 KB
  • 大小: 32.8 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android-android_additive_animations.zip

    Android-android_additive_animations.zip,Android附加动画!,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    android-sdk-sources-android-28.rar

    它提供了屏幕使用时间统计、应用使用限制、睡前模式等工具,帮助用户建立健康的数字生活习惯。 3. ** Adaptive Battery 和 Adaptive Brightness**:Android 9.0引入了Adaptive Battery技术,通过机器学习预测用户...

    android_additive_animations:Android的加性动画!

    在此处获得此库的良好概述: : 一体化要在您的项目中使用AdditiveAnimator ,请在build.gradle添加以下几行: dependencies { compile 'at.wirecube:additive_animations:1.9.0'}...repositories { jcenter()}快速...

    android-UI.zip_android_android java 界面_android ui_android 界面_校园导

    6. **动画(Animations)**:Android提供多种动画类型,如属性动画(Property Animation)、视图动画(View Animation)和过渡动画(Transition Animation),可用于创建吸引人的用户交互。 7. **自定义视图...

    Androidg_java_android_acceptxpj_

    在Android开发中,动画是提升用户体验的关键因素之一。"Androidg_java_android_acceptxpj_"这个主题聚焦...Material-Animations-master项目应该提供了丰富的示例代码和实践指导,是学习和提升Android动画技能的好资源。

    android_animations:Android动画-准备使用XML文件

    本教程将聚焦于“android_animations”项目,这个项目主要关注如何使用XML文件来创建和管理Android应用程序中的动画。 首先,让我们理解XML在Android动画中的作用。XML(eXtensible Markup Language)是一种用于...

    Android-UI.rar_android_android ui_ui

    在Android中,可以使用XML文件定义颜色资源,方便在整个应用中复用。同时,通过设置主题(Theme),可以全局改变应用的视觉样式,如字体、背景色、控件样式等。 5. **响应式布局(Responsive Layouts)**: 使用...

    android-UI.rar_android_android ui_ui

    6. **动画(Animations)**:Android支持多种类型的动画,如属性动画(Property Animation)、视图动画(View Animation)等,为用户界面增添动态效果,提高用户体验。 7. **触摸反馈(Touch Feedback)**:通过...

    Android-animations

    通过学习和使用"Android-animations",开发者不仅可以提高应用的视觉吸引力,还能确保应用在不同版本的Android系统上保持一致的用户体验。此外,熟悉"nineoldandroids"也有助于理解和使用Android的原生动画系统,这...

    Android_UI.rar_Android_UI_android_ui

    7. **动画(Animations)**:Android支持属性动画(Property Animation)、视图动画(View Animation)和过渡动画(Transition Animation),用于增强用户体验。例如,滑动切换效果、淡入淡出等。 8. **对话框...

    Android Animations动画使用详解

    ### Android Animations动画使用详解 #### 一、概述 Android平台提供了丰富的动画支持来增强用户界面的交互体验。本文档将详细介绍Android中的四种基本动画类型:`Alpha`(透明度变化)、`Scale`(缩放变化)、`...

    Android代码-Animations

    Animations Beautiful animations from AOSP 依賴 Add it in your root build.gradle at the end of repositories: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 查詢最新...

    Android开发之Animations动画用法实例详解

    本文实例讲述了Android开发之Animations动画用法。分享给大家供大家参考,具体如下: 一、动画类型 Android的animation由四种类型组成:alpha、scale、translate、rotate XML配置文件中 alpha 渐变透明度...

    Android View Animations

    For making animations more real, I created another project named Android Easing Functions which is an implementations of easing functions on Android. So, we need to dependent that project. Step 1 ...

    mars《Android开发视频教程》第二季part1

    11_Animations01、12_Animations02、14_Animations04、15_Animations05和17_Animations07这些章节,会深入讲解如何创建和使用这些动画,以及如何实现复杂的过渡效果,提升用户体验。 2. **AppWidget**:AppWidget是...

    十大热门Android开源项目之 Material-Animations

    Material-Animations是专门为Android平台设计的一款开源项目,它致力于实现Material Design规范中的各种动画效果,使得开发者可以轻松地在自己的应用中添加生动、流畅的过渡动画。 项目的核心目标是提供Activity...

    [android.开发书籍].Android.3.0.Animations

    - 掌握Android 3.0中各种动画框架的使用方法。 - 学会如何设计和实现复杂的动画效果。 - 了解如何优化动画性能,避免影响用户体验。 - 能够独立完成包含高级动画效果的应用开发项目。 #### 六、结语 《Android 3.0...

    多个动画具体实例下载android

    `11_animations01`和`12_animations02`可能是关于视图动画的示例,可能包含了Alpha(透明度)、Scale(缩放)、Translate(平移)和Rotate(旋转)这四种基本动画的实现。 2. 属性动画(Property Animation) 从...

    EventsCalendar_kotlinandroid_kotlin_

    【标题】"EventsCalendar_kotlinandroid_kotlin_" 指示这是一个使用Kotlin语言开发的Android日历应用,重点在于其包含多种动画效果。在Android应用开发中,Kotlin已经逐渐成为主流语言,以其简洁、安全和面向现代...

Global site tag (gtag.js) - Google Analytics