欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)實(shí)現(xiàn)加載網(wǎng)絡(luò)圖片并下載至本地SdCard的方法

 更新時間:2018年01月08日 11:58:55   作者:z-Coder  
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)加載網(wǎng)絡(luò)圖片并下載至本地SdCard的方法,涉及Android圖片文件的讀取、保存及權(quán)限相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Android開發(fā)實(shí)現(xiàn)加載網(wǎng)絡(luò)圖片并下載至本地SdCard的方法。分享給大家供大家參考,具體如下:

package com.example.myimagedemo;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
public class MainActivity extends Activity {
  private ImageView mImageView;
  private String imgPath="http://pic.nipic.com/2007-11-09/200711912453162_2.jpg";
  private File cache;//緩存路徑
  Handler handler=new Handler(new Handler.Callback() {
    @Override
    public boolean handleMessage(Message msg) {
      //顯示
      Bitmap b=(Bitmap)msg.obj;
      mImageView.setImageBitmap(b);
      //保存至本地
      File imgFile=new File(cache,"woca.jpg");
      try {
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(imgFile));
        b.compress(Bitmap.CompressFormat.JPEG,80,bos);
        bos.flush();
        bos.close();
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      return false;
    }
  });
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mImageView=(ImageView)findViewById(R.id.mImageView);
    //創(chuàng)建緩存路徑
    //Environment.getExternalStorageDirectory()獲取手機(jī)內(nèi)存卡根路徑
    cache=new File(Environment.getExternalStorageDirectory(),"Test");
    if(!cache.exists()){
      cache.mkdirs();
    }
    //耗時操作都要放在子線程操作
    //開啟子線程獲取輸入流
    new Thread(new Runnable() {
      @Override
      public void run() {
        HttpURLConnection conn=null;
        InputStream is=null;
        try {
          URL url=new URL(imgPath);
          //開啟連接
          conn=(HttpURLConnection) url.openConnection();
          //設(shè)置連接超時
          conn.setConnectTimeout(5000);
          //設(shè)置請求方式
          conn.setRequestMethod("GET");
          //conn.connect();
          if(conn.getResponseCode()==200){
            is=conn.getInputStream();
            Bitmap b=BitmapFactory.decodeStream(is);
            //把輸入流轉(zhuǎn)化成bitmap格式,以msg形式發(fā)送至主線程
            Message msg=new Message();
            msg.obj=b;
            handler.sendMessage(msg);
          }
        } catch (Exception e) {
          e.printStackTrace();
        }finally{
          try {
          //用完記得關(guān)閉
            is.close();
            conn.disconnect();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }
    }).start();
  }
}

記得在AndroidMenifest.xml文件加入這三個權(quán)限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

另,可點(diǎn)擊此處查看Android權(quán)限操作說明

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

最新評論