次元画社(五),图片云中来

张天宇 on 2018-03-15

一、前

​ 有了图片地址,显示也写好了。考虑这样一种情况,用户觉得图片不错,想要下载下来当作壁纸。

​ 于是本次的功能就是从服务器下载图片。

​ 写一个Util类,使用工具类调用。

二、工具类ImageDownload

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* Created by zhangty1996 on 2018/3/9 0009.
* E-Mail:zhangty1996@163.com
*/
public class ImageDownload {
Button content;
ImageView image;
Bitmap bitmap;
/**
* 获取网络图片
* @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;
}
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==0x123){
image.setImageBitmap(bitmap);
}
};
};
/**
* 异步线程下载图片
*
*/
class Task extends AsyncTask<String, Integer, Void> {
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 static 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();
}
}
}

三、调用

​ 在ImageDetailsActivity中的下载按钮监听中调用。

1
2
3
4
5
String imagePath = getImagePath(StaticData.getLists().get(downPosi).getsURL());
Bitmap down_bitmap = BitmapFactory.decodeFile(imagePath);
mButtonDown.setBackgroundResource(R.mipmap.down);
ImageDownload.SavaImage(down_bitmap, Environment.getExternalStorageDirectory().getPath()+"/Cyhs");
Toast.makeText(getApplicationContext(), "φ(゜▽゜*)♪下载成功", Toast.LENGTH_SHORT).show();

四、后

​ 简单实现了服务器下载图片,有不好的地方欢迎大家指出,祝好!