Android開發(fā)實現(xiàn)加載網(wǎng)絡(luò)圖片并下載至本地SdCard的方法
本文實例講述了Android開發(fā)實現(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()獲取手機內(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"/>
另,可點擊此處查看Android權(quán)限操作說明
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android 網(wǎng)絡(luò)圖片查看顯示的實現(xiàn)方法
- Android讀取本地或網(wǎng)絡(luò)圖片并轉(zhuǎn)換為Bitmap
- Android 異步獲取網(wǎng)絡(luò)圖片并處理導(dǎo)致內(nèi)存溢出問題解決方法
- Android顯示網(wǎng)絡(luò)圖片實例
- Android 下載網(wǎng)絡(luò)圖片并顯示到本地
- 簡單實現(xiàn)Android讀取網(wǎng)絡(luò)圖片到本地
- Android使用線程獲取網(wǎng)絡(luò)圖片的方法
- 在Android的應(yīng)用中實現(xiàn)網(wǎng)絡(luò)圖片異步加載的方法
- Android實現(xiàn)網(wǎng)絡(luò)圖片瀏覽功能
- Android 讀取sdcard上的圖片實例(必看)
- Android sdcard實現(xiàn)圖片存儲 、聯(lián)網(wǎng)下載
相關(guān)文章
Android使用Intent傳大數(shù)據(jù)簡單實現(xiàn)詳解
這篇文章主要為大家介紹了Android使用Intent傳大數(shù)據(jù)簡單實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Android中LinearLayout布局的常用屬性總結(jié)
這篇文章主要介紹了Android中LinearLayout布局的常用屬性總結(jié),包括居中、重心、比例等線性布局中的基本設(shè)置,需要的朋友可以參考下2016-04-04
android教程之使用popupwindow創(chuàng)建菜單示例
這篇文章主要介紹了android使用popupwindow創(chuàng)建菜單的示例,需要的朋友可以參考下2014-02-02

