Android逐条加载ListView,实现动画更新
在Android应用中,如果ListView或是GridView里面的数据比较多的时候,加载会比较费时间,特别是里面有图片的时候,需要花费的时间就更长,这样就会出现一个长时间的等待黑屏界面,这样有时会给用户造成一种错觉,就是这个程序已经“死”了,,,
对于这个问题可以的一个方法是,添加一个ProgressDialog,显示正在处理的窗口,等待加载完之后再关闭这个窗口,
但是这样等所有的数据加载完之后,就是特别突然的显示,这样用户体验也不佳,
以前看Android优化大师的时候,打开进程管理的时候,它是前面显示正在加载的ProgressDialog,然后也可以看到后台的数据正在逐条加载,这样给人的感觉就好很多,现在就是要做这个效果~~~~
主要实现的思路是这样的,新建一个线程,然后在线程里面获取已经安装的程序,再逐条把这些程序(数据)添加到缓冲数组中,再发送一个消息,更新显示ListView的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
,当线程中所有的数据已经加载完的时候,再把ProgressDialog关掉,总的完成效果如下:
程序源代码Java代码
package com.sf.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.widget.ArrayAdapter; import android.widget.ListView;
/**
* @author Yao.GUET
* blog:
* 实现动态加载一个ListView
*/
public class ProcessorBarTest extends Activity { public static final int MSG_UPDATE_LIST = 18;
private ListView mApps;
private Context mContext;
private List
mAppList;
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub
super.onCreate(savedInstanceState); setContentView(R.layout.processorbar_test);
// ListView 列
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
mApps
mApps = (ListView)findViewById(R.id.lvProcessbar); mContext = this;
mAppList = new ArrayList();
// 设置正在处理窗口
dialog = new ProgressDialog(mContext);
dialog.setIcon(R.drawable.icon);
dialog.setTitle("ProgressDialog");
dialog.setMessage("Please wait while loading application list...");
dialog.setCancelable(false);
dialog.show();
// 开始动态加载线程
mThreadLoadApps.start();
}
private Thread mThreadLoadApps = new Thread(){
@Override
public void run() {
int i = 0;
// TODO Auto-generated method stub
// 获取已经安装程序列表
PackageManager pm = mContext.getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); List list =
pm.queryIntentActivities(mainIntent, 0);
// 逐项添加程序,并发送消息更新ListView列表。for (i=0; i绑定在一起之后,可以直接改变List>的内容,然后再使用Adapter的数据集更新通知,即可改变ListView的内容,所以后面改了一下源码变成这个样子,,,Java代码
package com.Yao_GUET.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/**
* @author Yao.GUET
* blog:
* 实现动态加载一个ListView
*/
public class ProcessorBarTest extends Activity { public static final int MSG_UPDATE_LIST = 18;
private ListView mApps;
private Context mContext;
private List mAppList;
private ProgressDialog dialog;
private ArrayAdapter mAdapter;
private boolean mIsLoaded = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.processorbar_test);
// ListView 列表mApps
mApps = (ListView)findViewById(R.id.lvProcessbar); mContext = this;
mAppList = new ArrayList();
mAdapter = new ArrayAdapter(mContext,
android.R.layout.simple_list_item_1, mAppList); mApps.setAdapter(mAdapter);
// 设置正在处理窗口
dialog = new ProgressDialog(mContext);
dialog.setIcon(R.drawable.icon);
dialog.setTitle("ProgressDialog");
dialog.setMessage("Please wait while loading application
list...");
dialog.setCancelable(false);
dialog.show();
// 开始动态加载线程
mThreadLoadApps.start();
mApps.setOnItemClickListener(new
AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView> parent, View v, int position,
long id) {
// TODO Auto-generated method stub
mAppList.remove(position);
mAdapter.notifyDataSetChanged();
}
});
// 获取已经安装程序列表
PackageManager pm = mContext.getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); List list =
pm.queryIntentActivities(mainIntent, 0);
// 逐项添加程序,并发送消息更新ListView列表。
for (int i=0; i
本文档为【android逐条加载listview实现动画更新】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。