2019独角兽企业重金招聘Python工程师标准>>>
private Button button;private ImageView imageView;private String image_path = "http://ww1.sinaimg.cn/mw600/a84f073ajw1dvlhrku4ppj.jpg";private final int IS_FINISH = 1;private ProgressDialog progressDialog = null;private Handler handler = new Handler(){@Overridepublic void handleMessage(android.os.Message msg) {byte[] data = (byte[])msg.obj;Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);imageView.setImageBitmap(bm);if (msg.what == IS_FINISH) {progressDialog.dismiss();}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);progressDialog = new ProgressDialog(this);progressDialog.setTitle("提示");progressDialog.setMessage("正在下载,请稍后");progressDialog.setCancelable(false);button = (Button) this.findViewById(R.id.button1);imageView = (ImageView) this.findViewById(R.id.imageview1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new MyThread()).start();progressDialog.show();}});}public class MyThread implements Runnable{@Overridepublic void run() {HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(image_path);HttpResponse httpResponse = null;try {httpResponse = httpClient.execute(httpGet);if (httpResponse.getStatusLine().getStatusCode() == 200) {byte[] data = EntityUtils.toByteArray(httpResponse.getEntity());Message message = Message.obtain();message.obj = data;message.what = IS_FINISH;handler.sendMessage(message);}} catch (Exception e) {e.printStackTrace();}}}
线程中执行耗时操作,handler中异步更新UI。网络获取图片、传递byte数组及byte数组转化为bitmap