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发送短信
  2. 修改ScrollView滚动条样式
  3. Android异步处理四:AsyncTask的实现原理
  4. AsyncTask源码分析
  5. UI布局参数(持续更新)
  6. 详解Android(安卓)AM命令
  7. Android四大视图动画图文详解
  8. android UI 配置参数
  9. TextView常见功能应用

随机推荐

  1. 关于反序列化时抛出java.io.EOFException
  2. 从RF、BB、AP、外设4个角度看手机的硬件
  3. 忽略转义字符时拆分字符串
  4. java中枚举enum的使用
  5. [刘阳Java]_了解BeanFactory_第4讲
  6. Java多线程六:线程优先级和yield()让步函
  7. JMeter-Java压力测试工具-02
  8. spring cloud微服务分布式云架构-Spring
  9. 充分利用 Java 的元数据,第 3 部分:高级处
  10. java 的 数据库连接测试类 (SQL server)