通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地。
首先需要在manifest上添加一些权限:
package com.xjw.test;
import java.io.file;
import java.io.fileoutputstream;
import java.io.inputstream;
import java.net.httpurlconnection;
import java.net.url;
import android.os.asynctask;
import android.os.bundle;
import android.os.environment;
import android.os.handler;
import android.os.message;
import android.app.activity;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.imageview;
import android.widget.toast;
public class mainactivity extends activity implements onclicklistener{
button content;
imageview image;
bitmap bitmap;
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
content=(button)findviewbyid(r.id.content);
image=(imageview)findviewbyid(r.id.image);
content.setonclicklistener(this);;
image.setonclicklistener(this);;
}
/**
* 获取网络图片
* @param imageurl 图片网络地址
* @return bitmap 返回位图
*/
public bitmap getimageinputstream(string imageurl){
url url;
httpurlconnection connection=null;
bitmap bitmap=null;
try {
url = new url(imageurl);
connection=(httpurlconnection)url.openconnection();
connection.setconnecttimeout(6000); //超时设置
connection.setdoinput(true);
connection.setusecaches(false); //设置不使用缓存
inputstream inputstream=connection.getinputstream();
bitmap=bitmapfactory.decodestream(inputstream);
inputstream.close();
} catch (exception e) {
e.printstacktrace();
}
return bitmap;
}
public void onclick(view v) {
switch (v.getid()) {
case r.id.content:
//加入网络图片地址
new task().execute("https://pic.4j4j.cn/upload/pic/20130617/55695c3c95.jpg");
break;
case r.id.image:
//点击图片后将图片保存到sd卡跟目录下的test文件夹内
savaimage(bitmap, environment.getexternalstoragedirectory().getpath()+"/test");
toast.maketext(getbasecontext(), "图片保存", toast.length_short).show();
break;
default:
break;
}
}
handler handler=new handler(){
public void handlemessage(android.os.message msg) {
if(msg.what==0x123){
image.setimagebitmap(bitmap);
}
};
};
/**
* 异步线程下载图片
*
*/
class task extends asynctask{
protected void doinbackground(string... params) {
bitmap=getimageinputstream((string)params[0]);
return null;
}
protected void onpostexecute(void result) {
super.onpostexecute(result);
message message=new message();
message.what=0x123;
handler.sendmessage(message);
}
}
/**
* 保存位图到本地
* @param bitmap
* @param path 本地路径
* @return void
*/
public void savaimage(bitmap bitmap, string path){
file file=new file(path);
fileoutputstream fileoutputstream=null;
//文件夹不存在,则创建它
if(!file.exists()){
file.mkdir();
}
try {
fileoutputstream=new fileoutputstream(path+"/"+system.currenttimemillis()+".png");
bitmap.compress(bitmap.compressformat.jpeg, 100,fileoutputstream);
fileoutputstream.close();
} catch (exception e) {
e.printstacktrace();
}
}
}