zoukankan      html  css  js  c++  java
  • Android_AsyncTask_DownloadImg

    layout.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            android:maxHeight="300dp"
            android:maxWidth="300dp"
            android:adjustViewBounds="true"/>
        <Button 
            android:id="@+id/btn_download"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onDownLoadImg"
            android:text="点击下载图片"
            android:textSize = "20sp"/>
    
    </LinearLayout>

    main.java

    package com.example.day07_asynctask_downloadimg;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.Dialog;
    import android.app.ProgressDialog;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.view.Menu;
    import android.view.View;
    import android.widget.ImageView;
    
    /*
     * 下载图片:
     * 1.初始化控件
     * 2.设置下载图片按钮监听
     *     2.1创建一个异步任务类,实现其抽象方法
     *     2.2开启异步任务开始下载
     *         在子线程中进行进行耗时操作下载图片
     *             1)创建HttpCient对象
     * `        2)创建HttpGet对象传入
     *             3)执行请求获得HttpResponse对象
     *             4)获得响应码
     *             5)判断响应码,成功,获得实体对象httpEntity
     *             6)通过HttpEntity对象的getContent()方法得到读取流
     *             7)封装成BitMap对象,并传回给主线程
     *         在主线程中显示图片
     * 
     *             
     */
    public class MainActivity extends Activity {
    
        private ImageView image;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            image = (ImageView) findViewById(R.id.image);
            
        }
        //2.设置下载图片按钮监听
        public void onDownLoadImg(View v){
            //new MyAsyncTask().execute("http://c.hiphotos.baidu.com/image/h%3D200/sign=8cbc53a04ded2e73e3e9812cb700a16d/f7246b600c338744513e9358560fd9f9d72aa01f.jpg");
    
        }
    //     2.1创建一个异步任务类,实现其抽象方法
        class MyAsyncTask extends AsyncTask<String, Void, Bitmap>{
    
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }
            @Override
            protected Bitmap doInBackground(String... params) {
                try {
                    DefaultHttpClient defaultCLient = new DefaultHttpClient();
                    HttpGet httpGet = new HttpGet(params[0]);
                    HttpResponse response = defaultCLient.execute(httpGet);
                    int code = response.getStatusLine().getStatusCode();
                    if(code == 200){
                        HttpEntity entity = response.getEntity();
                        InputStream content = entity.getContent();
                        Bitmap result = BitmapFactory.decodeStream(content);
                        return result;
                    }
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }
            @Override
            protected void onPostExecute(Bitmap result) {
                super.onPostExecute(result);
                image.setImageBitmap(result);
            }
    
            
        }
    
    }
  • 相关阅读:
    [译]kendoui
    [LeetCode] 74 Search a 2D Matrix(二分查找)
    [LeetCode] N皇后问题
    [LeetCode] 5 Longest Palindromic Substring
    [LeetCode] 98 Validate Binary Search Tree
    [LeetCode] 119 Pascal's Triangle II
    [LeetCode] 二叉树相关题目(不完全)
    排序方法的分类和实现
    已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
    拓扑排序(附LeetCode题目)
  • 原文地址:https://www.cnblogs.com/fangg/p/5730847.html
Copyright © 2011-2022 走看看