布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<Button
android:id="@+id/update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="104dp"
android:onClick="loadImage"
android:layout_marginTop="58dp"
android:text="更新图片" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/update"
android:layout_below="@+id/update"
android:layout_marginTop="28dp"
android:text="Button" />
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btn"
android:layout_below="@+id/btn"
android:layout_marginLeft="35dp"
android:layout_marginTop="84dp"
android:src="@android:drawable/star_big_on" />
</RelativeLayout>package com.example.thread;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
private Handler handler;
private ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
handler = new InnerHandler();
}
private class InnerHandler extends Handler{
@Override
public void handleMessage(Message msg) {
Bitmap bm = (Bitmap) msg.obj;
image.setImageBitmap(bm);
}
}
public void loadImage(View view){
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
Bitmap bm = loadImageFromNetWork();
Message msg = new Message();
msg.obj = bm;
handler.sendMessage(msg);
};
}.start();
}
private Bitmap loadImageFromNetWork(){
Bitmap bm = null;
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
return bm;
}
}public class MainActivity extends Activity {
private Handler handler;
private int MESSAGE_LOAD_IMAGE_COMPLETED = 100;
private ImageView image;
private Bitmap bm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
handler = new InnerHandler();
}
private class InnerHandler extends Handler{
@Override
public void handleMessage(Message msg) {
if(msg.what == MESSAGE_LOAD_IMAGE_COMPLETED){
image.setImageBitmap(bm);
}
}
}
public void loadImage(View view){
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
bm = loadImageFromNetWork();
Message msg = Message.obtain();
msg.what = MESSAGE_LOAD_IMAGE_COMPLETED;
handler.sendMessage(msg);
};
}.start();
}
private Bitmap loadImageFromNetWork(){
Bitmap bm = null;
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
return bm;
}
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
// handler = new InnerHandler();
handler = new Handler(new InnerHandlerCallback());
}
private class InnerHandlerCallback implements Handler.Callback{
@Override
public boolean handleMessage(Message msg) {
if(msg.what == MESSAGE_LOAD_IMAGE_COMPLETED){
image.setImageBitmap(bm);
}
return false;
}
}
原文:http://blog.csdn.net/wojiaohuangyu/article/details/50458631