158067568 发表于 2013-1-30 04:28:58

ListView进阶系列之一 内容顺序淡淡显示

ListView进阶系列之一 内容顺序淡淡显示

listView可以说是用的最多的控件之一了,给listview添加特效,将是日后开发中在所难免的事情。
实现一个简单的listview显示

这个大家应该是相当熟悉了。
q      在布局文件中添加ListView控件。(main.xml)
q      再在Layout中新建一个ListView每一项要显示的内容。(lvitem.xml)
q      在代码中得到ListView的引用,为其设置适配器,添加数据。(DemoActivity.java)
这个就不多说了,直接看代码吧:
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/listv"                   android:layout_width="fill_parent"                   android:layout_height="wrap_content"                   android:scrollbars="vertical"                   android:layoutAnimation="@anim/animationlayout"                   />         <Button                   android:id="@+id/buttonId"                   android:layout_width="fill_parent"                   android:layout_height="wrap_content"                   android:text="测试"                   /></LinearLayout> 
lvitem.xml
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android"         android:id="@+id/lvitem"      android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:stretchColumns ="*">          <TableRow>                   <TextView                            android:id="@+id/tvname"                           android:layout_width="wrap_content"             android:layout_height="wrap_content"                   >                   </TextView>                   <TextView                            android:id="@+id/tvage"                           android:layout_width="wrap_content"             android:layout_height="wrap_content"                   >                   </TextView>                   <TextView                            android:id="@+id/tvsex"                           android:layout_width="wrap_content"             android:layout_height="wrap_content"                   >                   </TextView>         </TableRow>         </TableLayout> 

 
 
 
DemoActivity.java

package cn.edu.heut.zcl; import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import android.app.Activity;import android.app.ListActivity;import android.content.Context;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter; public class DemoActivity extends Activity {    /** Called when the activity is first created. */         ListView lv;    @Override    public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);                setContentView(R.layout.main);      lv = (ListView)findViewById(R.id.listv);      List<Map<String, String>> data = new ArrayList<Map<String,String>>();      for(int i=0;i<10;i++){         Map<String,String> map = new HashMap<String,String>();         map.put("name","n"+i );         map.put("age","age"+i );         map.put("sex","s"+i );         data.add(map);      }                   String[] from = {"name","age","sex"};                   int[] to = {R.id.tvname,R.id.tvage,R.id.tvsex};                   SimpleAdapter sa = new SimpleAdapter(this, data, R.layout.lvitem, from, to);                   lv.setAdapter(sa);    }} 
 
 
添加特效

这里才是本文重点,listview的特效是通过Animation实现,首先在res中添加文件夹anim,在其中新建一个animationSet的xml,animatonset1.xml,在其中添加要使用的特效,特效的添加参考本博客的Animation系列教程。
之后要使用LayoutAnimationController,这里简要介绍一下该类的作用。
q      LayoutAnimationController用于为一个Layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果。
q      每一个控件将会拥有相同的动画效果。
q      可以设置每个控件的动画效果的时间,这些工作可以在xml中也可以在代码中实现。
具体实现情况代码:animationlayout.xml。在代码中将使用android:animation="@anim/animatonset1"引用之前的animation。
最后就可以为已经写好的listview添加动画效果。添加的方式很简单,只要在listview的xml文件声明处使用android:layoutAnimation="@anim/animationlayout"就可。
看代码
animatonset1
 
<?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> 
animationlayout
<?xml version="1.0" encoding="utf-8"?><layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"         android:delay="0.5"         android:animationOrder="random"          android:animation="@anim/animatonset1" />  
页: [1]
查看完整版本: ListView进阶系列之一 内容顺序淡淡显示