Android 异步从网络上下载图片

复制代码

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 {        /**         * 表示任务执行之前的操作         */        @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;    }}

更多相关文章

  1. Android HttpClient网络通信
  2. mono for android 读取网络远程图片
  3. Android File文件操作
  4. Android---网络编程之Retrofit2整体结构了解以及+Okhttp3+rxjava
  5. 原生态Android操作介绍之一
  6. Android 网络协议
  7. UI布局参数(持续更新)
  8. Android---网络编程之OkHttp3整体结构了解以及使用

随机推荐

  1. Android(安卓)TextView中文字通过Spannab
  2. Android的SQLite----重新认识Android(10)
  3. Android之TextView
  4. seekBar,RatingBar拖动条
  5. Android图形显示系统——一张图片的显示
  6. Android消息处理机制(二)
  7. 专辑: 善知堂android 4.0.3 就业视频教程
  8. Ubuntu下android源码下载与编译
  9. android sdk+MyEclipse+adt 配置与开发
  10. 【android】欢迎来到Android多进程时代