AsyncTask异步加载图片示例

来源:互联网 发布:淘宝开直通车有用吗 编辑:程序博客网 时间:2024/06/05 08:26

AsyncTask异步加载图片示例

更多asynctask代码请访问http://search.eoeandroid.com/f/discuz?mod=forum&formhash=ecf12ea5&srchtype=title&srhfid=93&srhlocality=forum%3A%3Aviewthread&sId=7379687&ts=1382436013&cuId=958550&cuName=hotmail589&gId=28&agId=3&egIds=28&fmSign=&ugSign28=&ugSign3=&ext_ffids=&sign=560887f957b806fd1afc89b5ab4863d7&charset=utf-8&source=discuz&fId=0&q=asynctask&srchtxt=asynctask&searchsubmit=true

代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package com.example.stoneasynctask;
 
import java.io.IOException;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
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 extendsActivity {
        public Button button;
        public ImageView imageView;
        public ProgressDialog progressDialog;
        public String image_path ="http://www.eoeandroid.com/static/image/common/eoe_logo.png";
 
        @Override
        protected voidonCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_main);
               button = (Button) this.findViewById(R.id.button1);
               imageView = (ImageView) this.findViewById(R.id.imageView1);
               progressDialog = newProgressDialog(MainActivity.this);
               progressDialog.setTitle("提示信息");
               progressDialog.setMessage("正在下载图片,请稍后");
               button.setOnClickListener(newView.OnClickListener() {
 
                       @Override
                       public voidonClick(View v) {
                               // 执行异步任务下载图片
                               new Mytask().execute(image_path);
                       }
               });
        }
 
        @Override
        public booleanonCreateOptionsMenu(Menu menu) {
               // Inflate the menu; this adds items to the action bar if it is present.
               getMenuInflater().inflate(R.menu.main, menu);
               return true;
        }
 
        // 需要先继承AsyncTask接口,第一个参数是执行路径,第二个是进度,第三个是返回值
        public class Mytask extends AsyncTask<String, Void, Bitmap> {
 
               // 可以在这里执行耗时操作
               protected Bitmap doInBackground(String... params) {
                       // 实例化网络客户端对象
                       HttpClient httpClient = newDefaultHttpClient();
                       // 实例化请求对象,并且取出参数列表中的参数
                       HttpGet httpGet = newHttpGet(params[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 (ClientProtocolException e) {
                               // TODO 自动生成的 catch 块
                               e.printStackTrace();
                       } catch (IOException e) {
                               // TODO 自动生成的 catch 块
                               e.printStackTrace();
                       }
                       return bitmap;
               }
 
               // 表示任务执行之前的操作
               protected voidonPreExecute() {
                       // TODO 自动生成的方法存根
                       super.onPreExecute();
                       // 下载之前显示弹出框然后下载图片,下载完会结束弹出框
                       progressDialog.show();
               }
 
               @Override
               // 在这个方法里进行更新UI操作
               protected voidonPostExecute(Bitmap result) {
                       // TODO 自动生成的方法存根
                       super.onPostExecute(result);
                       // 给图片控件设置下载的图片
                       imageView.setImageBitmap(result);
                       // 隐藏弹出框
                       progressDialog.dismiss();
               }
 
        }
}
0 0
原创粉丝点击