读书人

Android 异步更新UI-AsyncTask

发布时间: 2013-09-14 13:03:22 作者: rapoo

Android 异步更新UI----AsyncTask

在前一章

package com.example.thread;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 com.example.test.R;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.Toast;public class AsyncTaskActivity extends Activity{private ImageView mImageView; private Button mButton; private ProgressBar mProgressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main12);mImageView = (ImageView)findViewById(R.id.imageView);mButton = (Button)findViewById(R.id.button);mProgressBar = (ProgressBar) findViewById(R.id.progressBar);mButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {new MyAsyncTask().execute("http://csdnimg.cn/www/images/csdnindex_logo.gif");}});}class MyAsyncTask extends AsyncTask<String, Integer, Bitmap>{@Overrideprotected Bitmap doInBackground(String... params) {publishProgress(0);//将会调用onProgressUpdate(Integer... progress)方法HttpClient hc = new DefaultHttpClient();publishProgress(30);HttpGet hg = new HttpGet(params[0]);final Bitmap bm;try {HttpResponse hr = hc.execute(hg);bm = BitmapFactory.decodeStream(hr.getEntity().getContent());} catch (Exception e) {return null;}publishProgress(100);return bm;}@Overrideprotected void onProgressUpdate(Integer... values) {mProgressBar.setProgress(values[0]);}@Overrideprotected void onPostExecute(Bitmap result) {if (result != null) {Toast.makeText(AsyncTaskActivity.this, "成功获取图片", Toast.LENGTH_LONG).show(); mImageView.setImageBitmap(result); }else { Toast.makeText(AsyncTaskActivity.this, "获取图片失败", Toast.LENGTH_LONG).show(); }}@Overrideprotected void onPreExecute() {mImageView.setImageBitmap(null);mProgressBar.setProgress(0);super.onPreExecute();}@Overrideprotected void onCancelled() {super.onCancelled();mProgressBar.setProgress(0);}} }

读书人网 >Android

热点推荐