package com.example.android_asynctask; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { private Button button; private ImageView imageView; private String image_Path = "http://e.hiphotos.baidu.com/image/pic/item/2fdda3cc7cd98d10b510fdea233fb80e7aec9021.jpg"; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); imageView = (ImageView) findViewById(R.id.imageView1); dialog = new ProgressDialog(this); dialog.setTitle("提示信息"); dialog.setMessage("正在下載,請稍候..."); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub new MYTask().execute(image_Path); } }); } /** * 使用異步任務的規則: 1、申明的類繼承AsyncTask 標注三個參數的類型 * 2、第一個參數表示要執行的任務,通常是網絡的路徑;第二個參數表示進度的刻度,第三個參數表示任務執行的返回結果 * * @author liende * */ public class MYTask extends AsyncTask<String, Void, Bitmap> { /** * 表示任務執行之前的操作 */ @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); dialog.show(); } /** * 主要是完成耗時的操作 */ @Override protected Bitmap doInBackground(String... arg0) { // TODO Auto-generated method stub // 使用網絡連接類HttpClient類王城對網絡數據的提取 HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(arg0[0]); Bitmap bitmap = null; try { HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity httpEntity = httpResponse.getEntity(); byte[] data = EntityUtils.toByteArray(httpEntity); bitmap = BitmapFactory .decodeByteArray(data, 0, data.length); } } catch (Exception e) { // TODO: handle exception } return bitmap; } /** * 主要是更新UI的操作 */ @Override protected void onPostExecute(Bitmap result) { // TODO Auto-generated method stub super.onPostExecute(result); imageView.setImageBitmap(result); dialog.dismiss(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
<uses-permission android:name="android.permission.INTERNET" />