Android中获取网络图片的方法(如果手机缓存里面有就从缓存获取)
16lz
2021-01-26
http://doinone.iteye.com/blog/1074366
// 如果缓存里面有就从缓存获取,否则网络获取图片,返回Drawable对象public static Drawable loadImageFromNetwork(Context context, String imageUrl){Drawable drawable = null;if(imageUrl == null )return null;String imagePath = "";String fileName = "";// 获取url中图片的文件名与后缀if(imageUrl!=null&&imageUrl.length()!=0){ fileName = imageUrl.substring(imageUrl.lastIndexOf("/")+1);}// 图片在手机本地的存放路径,注意:fileName为空的情况imagePath = context.getCacheDir() + "/" + fileName;Log.i("test","imagePath = " + imagePath);File file = new File(context.getCacheDir(),fileName);// 保存文件Log.i("test","file.toString()=" + file.toString());if(!file.exists()&&!file.isDirectory()){try {// 可以在这里通过文件名来判断,是否本地有此图片FileOutputStream fos=new FileOutputStream( file );InputStream is = new URL(imageUrl).openStream();int data = is.read(); while(data!=-1){ fos.write(data); data=is.read();; } fos.close();is.close();//drawable = Drawable.createFromStream(//new URL(imageUrl).openStream(), file.toString() ); // (InputStream) new URL(imageUrl).getContent();drawable = Drawable.createFromPath(file.toString());Log.i("test", "file.exists()不文件存在,网上下载:" + drawable.toString());} catch (IOException e) {Log.d("test", e.getMessage());}}else{drawable = Drawable.createFromPath(file.toString());Log.i("test", "file.exists()文件存在,本地获取");}if (drawable == null) {Log.d("test", "null drawable");} else {Log.d("test", "not null drawable");}return drawable ;}
更多相关文章
- 关于Android用户定位获取location值为null的解决方法
- Android(安卓)获取Inflate得到的view的宽度高度
- Android(安卓)APP常用图标尺寸规范
- Android: 缩放图片文件引起的OOM异常
- Android(安卓)清理缓存、优化内存空间
- AccountManager getAccount 在Android(安卓)O 8.0版本中获取为 n
- android bitmap drawable 互转
- Android常用UI
- android手机内部存储空间和外部存储空间获取代码