- 浏览: 249872 次
- 性别:
- 来自: 内蒙古
文章分类
- 全部博客 (237)
- Android 功能实现 (31)
- sql数据库的学习 (8)
- Android 美化界面 (2)
- Android 优化 (1)
- Ruby on Rails 方面 (45)
- git 方面的学习 (1)
- ruby 编程的琢磨 (13)
- linux下工具软件 (13)
- 操作系统的学习 (40)
- 非技术 (13)
- 网站开发 (18)
- js 学习笔记 (19)
- css学习 (5)
- 回顾总结 (2)
- Delphi 学习 (2)
- C 语言学习笔记 (1)
- 数据结构 (1)
- node js 学习 (6)
- 设计模式 (2)
- mongdb 学习笔记 (0)
- 软件服务 (3)
- osx系统 (4)
- 搜索引擎 (1)
- 测试工具 (1)
- Aliyun (1)
- 前端JS (1)
- python学习 (0)
- iOS系统 (1)
- 分布式锁 (1)
- 开发工具 (0)
- java代码 (2)
- java (1)
最新评论
-
jiguanghover:
写的不错,收藏一下
Ubuntu下RVM, Ruby, rails安装详细 和 卸载 -
maoghj:
回顾总结(二) -
yun2223:
对楼主表示感谢
Android控件开发之Gallery3D效果 -
zw_lovec:
说清楚点吧 亲 加点注释
out of memory -
lzyfn123:
http://www.iteye.com/images/smi ...
ruby-string 字符串的学习
ProgressBar+AsyncTask 实现界面数据异步加载
加载数据时
加载数据完成时
加载数据异常时
2 实现说明
加载前:界面显示异步加载控件,隐藏数据显示控件,加载异常控件
加载成功:根据加载的数据,初始化数据显示控件
加载失败:显示加载异常的控件,异常异步加载控件
中间的加载过程,通过AsyncTask来实现,在AsyncTask中主要实现两个方法
//后台运行,互联网后台数据加载接口
protected Integer doInBackground(String... params)
//数据加载完成,结合数据,进行UI处理
protected void onPostExecute(Integer result)
3 实现代码
3.1界面部分
加载控件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:id="@+id/async_begin" >
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
style="@android:style/Widget.ProgressBar.Small.Inverse"
android:layout_marginRight="5dp" />
<TextView android:text="加载信息中。。。。。"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:textColor="#000000"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
复制代码
加载失败控件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="horizontal"
android:id="@+id/async_error"
android:visibility="gone" >
<TextView android:text="网络异常,不能加载数据"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:textColor="#000000"
android:layout_height="wrap_content"></TextView>
<Button android:text=""
android:id="@+id/but_reflesh"
android:background="@drawable/but_reflesh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>
数据展示控件:
View Code
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:visibility="gone"
android:id="@+id/rl_content"
android:orientation ="vertical"
android:gravity="center_horizontal"
>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_width="300px">
<ImageView android:src="@drawable/ranklist_myrank" android:id="@+id/imageView2" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
<RelativeLayout android:background="@drawable/ranklist_itembg" android:layout_height="wrap_content" android:id="@+id/relativeLayout1" android:layout_width="300px">
<LinearLayout android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/line_photo" android:background="@drawable/ranklist_photobg" >
<ImageView android:src="@drawable/ranklist_male" android:id="@+id/ranklist_male" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_toRightOf="@id/line_photo" >
<TextView android:textColor="#000000" android:text="1. xuwenbing" android:id="@+id/txt_nicename" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:textColor="#000000" android:text="积分为:1234" android:id="@+id/txt_integral" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
<LinearLayout android:gravity="center_vertical" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_alignParentRight="true" >
<ImageView android:src="@drawable/ranklist_goto" android:id="@+id/imageView3" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
</RelativeLayout>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout3" android:layout_width="wrap_content">
<ImageView android:src="@drawable/ranklist_rank_other" android:id="@+id/imageView4" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout5" android:layout_width="300px">
<ListView android:background="@drawable/ranklist_itembg" android:scrollbars="vertical" android:layout_height="300px" android:id="@+id/listView_ranklist" android:layout_width="wrap_content"></ListView>
</LinearLayout>
</LinearLayout>
3.2后台代码
AsyncTask 类的生成,和调用:
View Code
//AsyncTask
class AsyncLoader_GuessInfo extends AsyncTask<String, Void, Integer>{
@Override
protected Integer doInBackground(String... params) {
int result=0;
try{
//加载数据
if(params[0].length()>0)
model= IntegralDataServiceHelper.GetRank(params[0],ProjectConstant.AppID);
list= IntegralDataServiceHelper.GetTopList(0, 10,ProjectConstant.AppID);
if(list!=null)
result=2;
}
catch(Exception ex){
result=-1;
}
return result;
}
@Override //处理界面
protected void onPostExecute(Integer result) {
Log.i("ExerciseGuess", "onPostExecute(Result result) called");
if( result==2)
LoadAndBandingData();
else
{
LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
async_begin.setVisibility(View.GONE);
LinearLayout async_error=(LinearLayout)findViewById(R.id.async_error);
async_error.setVisibility(View.VISIBLE);
}
}
}
调用:new AsyncLoader_GuessInfo().execute(account);
异步界面,重试部分实现
//加载刷新按钮事件
Button but_reflesh=(Button)findViewById(R.id.but_reflesh);
but_reflesh.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v){
//显示加载的部分
LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
async_begin.setVisibility(View.VISIBLE);
//隐藏异步加载失败部分
LinearLayout async_error=(LinearLayout)findViewById(R.id.async_error);
async_error.setVisibility(View.GONE);
//异步加载
new AsyncLoader_GuessInfo().execute(account);
}
});
界面初始化数据部分:
View Code
public void LoadAndBandingData()
{
LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
async_begin.setVisibility(View.GONE);
LinearLayout rl_content=(LinearLayout)findViewById(R.id.rl_content);
rl_content.setVisibility(View.VISIBLE);
TextView txt_nicename =(TextView)findViewById(R.id.txt_nicename);
TextView txt_integral =(TextView)findViewById(R.id.txt_integral);
if(model!=null)
{
txt_nicename.setText(String.valueOf(model.RankNo)+". "+model.UserNiceName);
txt_integral.setText("当前的积分:"+String.valueOf(model.IntegralSum));
}
else
{
txt_nicename.setText("当前还没有注册用户!");
txt_integral.setText("当前的积分:0");
}
ListView listview =(ListView)findViewById(R.id.listView_ranklist);
listview.setAdapter(new RankListAdapter(this, R.layout.sub_ranlist_item,list));
//增加选择事件
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
});
转自: http://www.cnblogs.com/macroxu-1982/archive/2011/08/11/2135233.html
加载数据时
加载数据完成时
加载数据异常时
2 实现说明
加载前:界面显示异步加载控件,隐藏数据显示控件,加载异常控件
加载成功:根据加载的数据,初始化数据显示控件
加载失败:显示加载异常的控件,异常异步加载控件
中间的加载过程,通过AsyncTask来实现,在AsyncTask中主要实现两个方法
//后台运行,互联网后台数据加载接口
protected Integer doInBackground(String... params)
//数据加载完成,结合数据,进行UI处理
protected void onPostExecute(Integer result)
3 实现代码
3.1界面部分
加载控件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:id="@+id/async_begin" >
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
style="@android:style/Widget.ProgressBar.Small.Inverse"
android:layout_marginRight="5dp" />
<TextView android:text="加载信息中。。。。。"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:textColor="#000000"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
复制代码
加载失败控件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:orientation="horizontal"
android:id="@+id/async_error"
android:visibility="gone" >
<TextView android:text="网络异常,不能加载数据"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:textColor="#000000"
android:layout_height="wrap_content"></TextView>
<Button android:text=""
android:id="@+id/but_reflesh"
android:background="@drawable/but_reflesh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>
数据展示控件:
View Code
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:visibility="gone"
android:id="@+id/rl_content"
android:orientation ="vertical"
android:gravity="center_horizontal"
>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_width="300px">
<ImageView android:src="@drawable/ranklist_myrank" android:id="@+id/imageView2" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
<RelativeLayout android:background="@drawable/ranklist_itembg" android:layout_height="wrap_content" android:id="@+id/relativeLayout1" android:layout_width="300px">
<LinearLayout android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/line_photo" android:background="@drawable/ranklist_photobg" >
<ImageView android:src="@drawable/ranklist_male" android:id="@+id/ranklist_male" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_toRightOf="@id/line_photo" >
<TextView android:textColor="#000000" android:text="1. xuwenbing" android:id="@+id/txt_nicename" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:textColor="#000000" android:text="积分为:1234" android:id="@+id/txt_integral" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
<LinearLayout android:gravity="center_vertical" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_alignParentRight="true" >
<ImageView android:src="@drawable/ranklist_goto" android:id="@+id/imageView3" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
</RelativeLayout>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout3" android:layout_width="wrap_content">
<ImageView android:src="@drawable/ranklist_rank_other" android:id="@+id/imageView4" android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
</LinearLayout>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout5" android:layout_width="300px">
<ListView android:background="@drawable/ranklist_itembg" android:scrollbars="vertical" android:layout_height="300px" android:id="@+id/listView_ranklist" android:layout_width="wrap_content"></ListView>
</LinearLayout>
</LinearLayout>
3.2后台代码
AsyncTask 类的生成,和调用:
View Code
//AsyncTask
class AsyncLoader_GuessInfo extends AsyncTask<String, Void, Integer>{
@Override
protected Integer doInBackground(String... params) {
int result=0;
try{
//加载数据
if(params[0].length()>0)
model= IntegralDataServiceHelper.GetRank(params[0],ProjectConstant.AppID);
list= IntegralDataServiceHelper.GetTopList(0, 10,ProjectConstant.AppID);
if(list!=null)
result=2;
}
catch(Exception ex){
result=-1;
}
return result;
}
@Override //处理界面
protected void onPostExecute(Integer result) {
Log.i("ExerciseGuess", "onPostExecute(Result result) called");
if( result==2)
LoadAndBandingData();
else
{
LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
async_begin.setVisibility(View.GONE);
LinearLayout async_error=(LinearLayout)findViewById(R.id.async_error);
async_error.setVisibility(View.VISIBLE);
}
}
}
调用:new AsyncLoader_GuessInfo().execute(account);
异步界面,重试部分实现
//加载刷新按钮事件
Button but_reflesh=(Button)findViewById(R.id.but_reflesh);
but_reflesh.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v){
//显示加载的部分
LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
async_begin.setVisibility(View.VISIBLE);
//隐藏异步加载失败部分
LinearLayout async_error=(LinearLayout)findViewById(R.id.async_error);
async_error.setVisibility(View.GONE);
//异步加载
new AsyncLoader_GuessInfo().execute(account);
}
});
界面初始化数据部分:
View Code
public void LoadAndBandingData()
{
LinearLayout async_begin=(LinearLayout)findViewById(R.id.async_begin);
async_begin.setVisibility(View.GONE);
LinearLayout rl_content=(LinearLayout)findViewById(R.id.rl_content);
rl_content.setVisibility(View.VISIBLE);
TextView txt_nicename =(TextView)findViewById(R.id.txt_nicename);
TextView txt_integral =(TextView)findViewById(R.id.txt_integral);
if(model!=null)
{
txt_nicename.setText(String.valueOf(model.RankNo)+". "+model.UserNiceName);
txt_integral.setText("当前的积分:"+String.valueOf(model.IntegralSum));
}
else
{
txt_nicename.setText("当前还没有注册用户!");
txt_integral.setText("当前的积分:0");
}
ListView listview =(ListView)findViewById(R.id.listView_ranklist);
listview.setAdapter(new RankListAdapter(this, R.layout.sub_ranlist_item,list));
//增加选择事件
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
});
转自: http://www.cnblogs.com/macroxu-1982/archive/2011/08/11/2135233.html
发表评论
-
Android里的音量调节
2013-04-01 13:37 1362步骤1:或许系统音量 ... -
Android Camera 方法分析
2012-03-29 10:52 3525Android Camera源码分析 android通 ... -
MyCameraActivity
2012-03-29 10:10 724package cn.fn; import android. ... -
MyCameraActivity
2012-04-01 13:27 905package cn.fn; import android. ... -
android AutoCompleteTextView+ SQLite
2012-03-21 13:33 1135android AutoCompleteTextView+ S ... -
android 异步回调加载网络图片
2012-03-20 11:50 961在做应用的时候很多时候都会去从网络加载图片,而且还要做各种各样 ... -
Android 网络图片异步加载实例
2012-03-20 10:04 1005Android 网络图片异步加载实例 ... -
解决java.lang.OutOfMemoryError
2012-03-19 15:53 1113解决java.lang.OutOfMemoryError ... -
android Text 删除线
2012-03-16 19:35 1195import android.app.Activit ... -
android Gallery 详解
2012-03-14 14:17 1543android Gallery 正文 ... -
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask,Task,AsynTask等
2012-03-14 11:43 1468Android的线程使用来更新UI----Thread、Han ... -
AsyncTask的使用
2012-03-14 10:59 847AsyncTask的使用 ... -
Android控件开发之Gallery3D效果
2012-03-13 14:38 2950Android控件开发之Gal ... -
android GridView
2012-03-08 10:28 932主类 import android.app.Activi ... -
ListView异步加载图片是非常实用的方法
2012-03-08 10:09 983ListView异步加载图片是非常实用的方法,凡是是要通过网络 ... -
复制assets下的数据库到SD卡
2012-03-07 10:56 1251首先使用sqliteadDev(一个windows下图形化sq ... -
Android异步加载图像小结
2012-03-06 16:46 623Android异步加载图像小结 (1)由于an ... -
AutoCompleteTextView
2012-03-05 14:53 1450AutoCompleteTextView ... -
android 动态加载List
2012-03-05 11:11 1015main.xml <?xml ver ... -
AutoCompleteTextView
2012-03-02 16:17 1084public class CityAdapter<T& ...
相关推荐
在异步任务开始时,可以显示ProgressBar,当任务完成或数据加载完毕后隐藏,这样提高了用户体验。 在实际应用中,首先,使用HttpRequest发送网络请求获取XML或HTML数据。然后,通过Document解析XML内容,如果是HTML...
在Android开发中,异步操作是必不可少的一部分,它允许我们执行耗时的操作,如加载网络资源,而不阻塞用户界面。`AsyncTask`是Android提供的一种轻量级的并发工具,用于在后台线程执行任务,并在主线程更新UI。在本...
异步加载图片的基本思想是将图片加载工作放在后台线程中执行,避免阻塞主线程,保证界面的流畅性。在Android中,我们通常会使用以下几种方法: 1. **AsyncTask**:Android提供的轻量级异步任务类,适合处理短时间、...
在安卓(Android)平台上...总结,创建Android应用的启动加载界面需要结合Activity的生命周期、异步加载机制以及对用户体验的理解。通过合理的设计和实现,加载界面可以成为一个增强品牌形象和提升用户体验的有效工具。
这个例子可能使用了自定义的异步加载机制,确保图片加载不影响用户界面的流畅性。 4. **滚动翻页**: - 当用户滚动到ListView的底部时,通常会触发加载更多数据的逻辑。这可以通过监听ListView的`OnScrollListener...
本篇文章将深入探讨如何使用`AsyncTask`来实现网络图片的加载以及进度条的同步显示。 首先,我们需要理解`AsyncTask`的基本结构。`AsyncTask`包含三个泛型参数:`Params`、`Progress`和`Result`,分别代表输入参数...
在Android开发中,异步加载图标是一项常见的优化技术,它主要解决了在用户界面(UI)中加载大图或网络图片可能导致的卡顿问题。本技术通过将图像加载过程放到后台线程,确保UI线程始终保持流畅,提升用户体验。下面将...
在Android开发中,异步加载图片是一项至关重要的技术,它能显著提升用户体验,避免因为图片加载导致的界面卡顿。本资源"Android高级应用源码-演化理解 Android 异步加载图片.zip"提供了关于Android异步加载图片的...
为了实现加载更多功能,我们需要在后台异步加载新数据,通常使用AsyncTask或者Retrofit、OkHttp等网络库进行网络请求。加载完成后,将新数据添加到Adapter的数据源中,然后调用`notifyDataSetChanged()`通知ListView...
在Android开发中,网络图片异步加载是一种常见的需求,它能提高用户体验,避免因为网络请求导致的界面卡顿。本文将详细介绍如何实现Android网络图片的异步加载,涉及的关键技术包括ProgressDialog、Handler、Thread/...
本项目名为“安卓Android源码——模仿易网新闻页面源码(异步加载)”,旨在通过模仿易网的新闻页面设计,帮助开发者掌握Android应用中异步加载数据的技术。在这个项目中,我们将探讨以下几个关键知识点: 1. **异步...
在Android开发中,异步加载网络图片是一项常见的需求,它能提高用户体验,避免因为网络请求导致的界面卡顿。本文将介绍两种实现方法,并涉及ProgressDialog、Handler、Thread/Runnable、URL、HttpURLConnection等...
3. **异步任务与进度更新**:在执行耗时操作(如网络请求)时,可以使用`AsyncTask`或其他异步方法,在后台线程更新进度,并在主线程中同步进度条: ```java new AsyncTask, Integer, Void>() { @Override ...
3. **异步加载数据**:为了不影响用户界面的响应,分页加载数据应在一个后台线程(如AsyncTask)中进行。加载完成后,更新Adapter的数据集并调用`notifyDataSetChanged()`刷新ListView。 4. **“加载中”状态显示**...
在Android应用开发中,用户界面(UI)的交互体验至关重要,尤其是涉及到登录、提交数据以及加载数据等操作。这些操作通常涉及到网络通信、数据持久化、异步处理等多个技术领域。下面将根据提供的标题和描述,详细...
同时,ProgressBar还可以与AsyncTask或其他异步任务结合,动态更新进度。例如,在文件下载中,可以通过监听下载进度并调用setProgress()方法来实时更新进度条。 在进行源码分析时,可以查看ProgressBar的源代码,...
使用异步加载和缓存机制,可以显著提升用户体验。 10. **代码结构**:遵循MVC(模型-视图-控制器)或MVVM(模型-视图-ViewModel)架构,将业务逻辑和UI分离,使代码更易于维护和扩展。 通过以上技术,我们可以构建...
在Android开发中,ProgressBar是一个非常重要的控件,它用于显示进度状态,比如数据加载、文件下载等操作。在Android 2.3版本中,开发者可以使用ProgressBar来为用户创建直观的等待反馈,增强用户体验。本篇文章将...
直条型通常显示任务的完成百分比,而圆形则更常用于表示无限循环的加载过程,如等待数据加载。 实现`ProgressBar`自动增量的代码通常会涉及以下几个关键部分: 1. **布局文件**: 在XML布局文件中,你需要定义一...
在安卓开发中,ProgressBar是用户界面(UI)中不可或缺的组件之一,用于向用户展示某个操作的进度或者等待状态。这个压缩包“安卓Android源码——(ProgressBar进度条).zip”很可能包含了关于如何自定义和使用...