android开发之Animations的使用(四)

android开发之Animations的使用(四)

本博文主要讲述的是,animation在layout中的使用。本文是用ListView控件为例子

实现在layout中的使用有两种方法,

第一是直接使用xml文件中的layoutAnimation标签

第二是使用代码实现,使用layoutAnimationController对象完成,

详细代码如下:

MainActivity.java:

package com.example.animationtest4;

import java.util.ArrayList;

import java.util.HashMap;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.view.animation.LayoutAnimationController;

import android.widget.Button;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleAdapter;

/*

*本类主要实现的是Animation的动画效果在layout控件中的使用

*本例将anim_list动画效果应用于listview 控件中

*/

public class MainActivity extends Activity {

private Button testButton = null;

private ListView listView = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

testButton = (Button)findViewById(R.id.myButton);

listView = (ListView)findViewById(R.id.myList);

testButton.setOnClickListener(new buttonListener());

}

class buttonListener implements OnClickListener{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

//使用布局文件完成对Layout控件的动画效果的设置

//查看layout_anim_list.xml文件

//listView.setAdapter(buildListAdapter());

//使用xml文件实现,需要在相应的layout控件中添加如下语句:

android:layoutAnimation="@anim/layout_anim_list"

//使用代码实现layout控件的动画效果设置

listView.setAdapter(buildListAdapter());

Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_list);

//创建LayoutAnimationController对象,且设置延时为0.5s

LayoutAnimationController lac = new LayoutAnimationController(animation, 0.5f);

//设置显示的顺序是normal

lac.setOrder(LayoutAnimationController.ORDER_NORMAL);

listView.setLayoutAnimation(lac);

}

}

// 创建一个listAdapter对象

private ListAdapter buildListAdapter(){

ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

HashMap<String, String> map1 = new HashMap<String, String>();

HashMap<String, String> map2 = new HashMap<String, String>();

HashMap<String, String> map3 = new HashMap<String, String>();

map1.put("user", "张三");

map1.put("sex", "男");

map2.put("user", "李四");

map2.put("sex", "女");

map3.put("user", "王五");

map3.put("sex", "男");

list.add(map1);

list.add(map2);

list.add(map3);

SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list, R.layout.item, new String[]{"user","sex"}, new int[]{R.id.user,R.id.sex});

return adapter;

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

动画效果布局文件anim_list.xml:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

android:interpolator="@android:anim/accelerate_interpolator" >

<alpha

android:duration="2000"

android:fromAlpha="0.0"

android:toAlpha="1.0" />

</set>

layout控件实现动画效果的布局文件layout_anim_list.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/anim_list">

</layoutAnimation>

main.xml:

<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" >

<TextView

android:id="@+id/myText"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

<ListView

android:id="@+id/myList"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/myText"

//android:layoutAnimation="@anim/layout_anim_list"

/>

<Button

android:id="@+id/myButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/myList"

android:text="测试" />

</RelativeLayout>

listview条目的布局文件item.xml:

<?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="horizontal" >

<TextView

android:id="@+id/user"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

<TextView

android:id="@+id/sex"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

时间: 2024-10-07 01:38:26

android开发之Animations的使用(四)的相关文章

android开发之Animations的使用(三)

android开发之Animations的使用(三) 本博文主要讲述的是,Animations在android开发中的用来循环播放动画的效果: MainActivity.java: package com.example.animationtest3; import android.os.Bundle; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.v

Android开发之Tween(补间动画)完全解析(下)

欢迎转载,转载请注明出处:http://blog.csdn.net/dmk877/article/details/51980734 在上一篇文章中,我们详细讨论了Tween动画的xml的实现以及interpolator的使用,相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解,当然这篇文章也是承接上篇文章,所以强烈建议先阅读上篇文章:Android开发之Tween(补间动画)完全解析(上),这篇文章将从代码的角度实现上篇文章的效果.如有疑问请留言,如有谬误欢迎批评指正. T

Android开发之Html类详解

在进行Android开发中经常回忽略Html类.这个类其实很简单,就是将HTML标签文本解析成普通的样式文本.下面就让我么看一下这个类的具体介绍. 类结构: java.lang.Object    ? android.text.Html 类概述: 这个类用于处理的HTML字符串并将其转换成可显示的样式文本.但并不是所有的HTML标记的支持. 公有方法: 说其简单是应为它就有四个方法: Public Methods static String escapeHtml(CharSequence tex

Android开发之TextView高级应用

我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.下面就和大家分享一下TextView的一些使用技巧. Android中设置文本样式的几种方法: 1.将android:autoLink属性值设为true.系统会自动识别E-mail.电话.网址等特殊文本. 2.使用Html标签,例如,<font>.<img>等.不要设置 android:autoLink 属性. 3.在Java代码中直接使用Span对象来设置文本样式.这种方法需要将文本

Android开发之MediaRecorder类详解

MediaRecorder类详解 手机一般都有麦克风和摄像头,而Android系统就可以利用这些硬件来录制音视频了. 为了增加对录制音视频的支持,Android系统提供了一个MediaRecorder的类.该类的使用也非常简单,下面让我们来了解一下这个类: 一.类结构: java.lang.Object    ? android.media.MediaRecorder 二.类概述: 用于录制音频和视频的一个类. 三.状态图: 说明: 与MediaPlayer类非常相似MediaRecorder也

【转】Android开发之旅:活动与任务

引言 关于Android应用程序原理及术语,前面两篇: Android开发之旅:应用程序基础及组件 Android开发之旅:应用程序基础及组件(续) 介绍了Android应用程序的进程运行方式:每一个应用程序运行在它自己的Linux进程中.当应用程序中的任何代码需要执行时,Android将启动进程:当它不在需要且系统资源被其他应用程序请求时,Android将关闭进程.而且我们还知道了Android应用程序不像别的应用程序那样(有Main函数入口点),它没有单一的程序入口点,但是它必须要有四个组件

Android开发之ContentProvider(内容提供者)

1. ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同. 如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据. 而使用ContentProvider共享数据的好处是统一了数据访问方式 2.通过ContentProv

【转】Android开发之旅:应用程序基础及组件

为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用程序组件 2.1.活动(Activities) 2.2.服务(Services) 2.3.广播接收者(Broadcast receivers) 2.4.内容提供者(Content providers) 因为这些内容比较理论,且没有用例子来说明,看上去会比较枯燥,我就把这几篇写得算比较短,方便大家吸收. 1

android开发之synchronized的用法

android开发之synchronized的用法 在android开发中synchronized主要有四种用法.第一是在方法声明时使用:第二是在对某一代码块时使用:第三是对某一对象使用:第四是对某一类使用.具体的实现代码如下: 1.方法声明时使用 放在范围操作符(public等)之后,返回类型声明(void等)之前.这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线