异步加载图片显示时怎样加进度条 就是要实现这样的效果 进度条应该怎样加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Handler myHandler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what) { case 0: pd=ProgressDialog.show(friend_listActvity.this, "请稍候", "正在连接服务器...",true,true); break; case 1: pd.dismiss(); //显示图片 break; } super.handleMessage(msg); } }; private void threading(){ myHandler.sendEmptyMessage(0); new Thread() { public void run() { try { Thread.sleep(500);//加载图片资源,我做的是延迟 myHandler.sendEmptyMessage(1); } catch (Exception e) { e.printStackTrace(); } } }.start(); } http://blog.sina.com.cn/s/blog_70677d110100r1q9.html http://blog.sina.com.cn/s/blog_70677d110100r1q9.htmlup+ xh_ProgressBar2 是圆形,把xh_ProgressBar相关的处理屏蔽。 package bo.chen;import android.app.Activity;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Context;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.LinearLayout;import android.widget.ProgressBar;public class ThreadActivity extends Activity { private MyHandler handler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); handler = new MyHandler(); handler.sendEmptyMessage(0); } private class MyHandler extends Handler { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: PageTask task = new PageTask(ThreadActivity.this); task.execute("下载中"); break; } } } class PageTask extends AsyncTask<String, Integer, String>{ private LinearLayout layout; private ProgressBar bar; private AlertDialog alert; public PageTask(Context context){ layout = new LinearLayout(context); bar = new ProgressBar(context); layout.addView(bar); /*bar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); bar.setTitle("xiazai"); bar.show();*/ alert = new AlertDialog.Builder(context).setView(layout).setTitle("xiazai").create(); alert.show(); } @Override protected String doInBackground(String... params) { //bar.setTitle(params[0]); for(int i = 0;i<= 20;i++){ try { Thread.sleep(100); publishProgress(i); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return "over"; } /* @Override protected void onProgressUpdate(Integer... values) { // 更新进度 bar.setProgress(values[0]); }*/ @Override protected void onPostExecute(String result) { if("over".equals(result)) //bar.dismiss(); alert.dismiss(); } }}代码有的地方多余的 main.xml<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ProgressBar android:id="@+id/progressbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" /> </FrameLayout>public class MID extends Activity { ProgressBar pb; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); pb=(ProgressBar)findViewById(R.id.progressbar); threading(); } Handler myHandler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what) { case 0: pb.setVisibility(View.VISIBLE); break; case 1: pb.setVisibility(View.GONE); //显示图片 break; } super.handleMessage(msg); } }; private void threading(){ myHandler.sendEmptyMessage(0); new Thread() { public void run() { try { Thread.sleep(5000);//加载图片资源,我做的是延迟 myHandler.sendEmptyMessage(1); } catch (Exception e) { e.printStackTrace(); } } }.start(); }} 重写个组件吧默认就一直绘制等待的圈圈图片下载好后,再用handler更新一下 在Android 方建立ServerSocket遇到的问题 App创意征集~~~ 请教一个关于AsyncTask的问题 关于Dialog弹出ListView如何解决 修改源码后,在模拟器里运行出来没效果怎么回事? Android 3.0上,如何让menu键显示出来? 代码调试时遇到的问题 什么是CDMA 和GSM 关于多分辨率适应 应用上传说 APK中缺少应用的版本号 请教linux下编译Android的问题 布局和窗口部件有区别吗?
public void handleMessage(Message msg)
{
switch(msg.what)
{
case 0:
pd=ProgressDialog.show(friend_listActvity.this, "请稍候", "正在连接服务器...",true,true);
break;
case 1:
pd.dismiss();
//显示图片
break;
}
super.handleMessage(msg);
}
}; private void threading(){
myHandler.sendEmptyMessage(0);
new Thread() {
public void run() {
try {
Thread.sleep(500);//加载图片资源,我做的是延迟
myHandler.sendEmptyMessage(1);
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
把xh_ProgressBar相关的处理屏蔽。
package bo.chen;import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.LinearLayout;
import android.widget.ProgressBar;public class ThreadActivity extends Activity {
private MyHandler handler; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
handler = new MyHandler();
handler.sendEmptyMessage(0);
} private class MyHandler extends Handler { @Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
PageTask task = new PageTask(ThreadActivity.this);
task.execute("下载中");
break;
}
} }
class PageTask extends AsyncTask<String, Integer, String>{
private LinearLayout layout;
private ProgressBar bar;
private AlertDialog alert;
public PageTask(Context context){
layout = new LinearLayout(context);
bar = new ProgressBar(context);
layout.addView(bar);
/*bar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
bar.setTitle("xiazai");
bar.show();*/
alert = new AlertDialog.Builder(context).setView(layout).setTitle("xiazai").create();
alert.show();
}
@Override
protected String doInBackground(String... params) {
//bar.setTitle(params[0]);
for(int i = 0;i<= 20;i++){
try {
Thread.sleep(100);
publishProgress(i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "over";
}
/*
@Override
protected void onProgressUpdate(Integer... values) {
// 更新进度
bar.setProgress(values[0]);
}*/
@Override
protected void onPostExecute(String result) {
if("over".equals(result))
//bar.dismiss();
alert.dismiss();
}
}
}
代码有的地方多余的
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
/>
</FrameLayout>public class MID extends Activity {
ProgressBar pb;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pb=(ProgressBar)findViewById(R.id.progressbar);
threading();
}
Handler myHandler = new Handler(){
public void handleMessage(Message msg)
{
switch(msg.what)
{
case 0:
pb.setVisibility(View.VISIBLE);
break;
case 1:
pb.setVisibility(View.GONE);
//显示图片 break;
}
super.handleMessage(msg);
}
}; private void threading(){
myHandler.sendEmptyMessage(0);
new Thread() {
public void run() {
try {
Thread.sleep(5000);//加载图片资源,我做的是延迟
myHandler.sendEmptyMessage(1);
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
默认就一直绘制等待的圈圈
图片下载好后,再用handler更新一下