使用handler更新下載圖片簡單例子


跟新UI第一種方式android

MainActivity類 
api

代碼ide


public class MainActivity extends Activity {post

//下載圖片的地址URLthis

private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";url

private ImageView imageview;spa

private ProgressDialog progressDialog;線程

//更新UI 主線程code

Handler handler = new Handler() {圖片

public void handleMessage(android.os.Message msg) {

switch (msg.what) {

case 1:

progressDialog.show();

break;

case 2:

imageview.setImageBitmap((Bitmap)msg.obj);

break;

case 3:

//關閉下載進度條

progressDialog.dismiss();

break;

}

};

};


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


this.imageview = (ImageView) this.findViewById(R.id.imageview);

// 下載加載進度條

progressDialog = new ProgressDialog(this);

progressDialog.setTitle("提示");

progressDialog.setIcon(R.drawable.ic_launcher);

progressDialog.setMessage("正在下載...");

//下載圖片方法1

// 子線程

new Thread(new Runnable() {

@Override

public void run() {

// 顯示下載進度條

handler.sendEmptyMessage(1);//發送一個空消息

try {

Thread.sleep(1000);//休眠時間長點 保證下載進度條顯示才下載圖片

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 下載圖片

byte[] img_data = downimag();

Bitmap bitmap = BitmapFactory.decodeByteArray(img_data, 0,

img_data.length);

Message message = Message.obtain();

message.what = 2;

message.obj = bitmap;

//圖片數據下載完成消息

handler.sendMessage(message);

//關閉下載進度條消息

handler.sendEmptyMessage(3);

}

}).start();

}


private byte[] downimag() {

HttpGet get = new HttpGet(url);

HttpClient client = new DefaultHttpClient();

HttpResponse response;

try {

response = client.execute(get);

if (response.getStatusLine().getStatusCode() == 200) {

return EntityUtils.toByteArray(response.getEntity());

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}




===================================





跟新UI第二種方式


MainActivity類


代碼


public class MainActivity extends Activity {

private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";

private ImageView imageview;

private Handler handler = new Handler();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

this.imageview = (ImageView) this.findViewById(R.id.imageview);

//開啓子線程

new Thread (new Runnable() {

@Override

public void run() {

// 下載圖片

byte[] img_data = downimag();

final Bitmap bitmap = BitmapFactory.decodeByteArray(img_data, 0,

img_data.length);

//更新UI第二種方法

//使用handle.post方法 

handler.post(new Runnable() {

@Override

public void run() {

//在這裏更新UI-- 主線程

imageview.setImageBitmap(bitmap);

}

});

}

}).start();

}

private byte[] downimag() {

HttpGet get = new HttpGet(url);

HttpClient client = new DefaultHttpClient();

HttpResponse response;

try {

response = client.execute(get);

if (response.getStatusLine().getStatusCode() == 200) {

return EntityUtils.toByteArray(response.getEntity());

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

相關文章
相關標籤/搜索