可以加载Gif动画和png等图片的方法和控件
2016-09-06 10:25
489 查看
我司用的是钉钉管理软件,钉钉的引导页面是一个动画,所以上面要求我们的产品也要用GIF动画来引导,而且还要同时可以使用普通的png图片
在晚上搜索半天,在github上面找到一个叫GifImageView的自定义控件
那么剩下的我们就只需要
1、判断是不是gif动画
1.1、如果是就下载并且填装进GifImageView里面
2、如果是png
2.1、下载并且填充
二营长,把老子的意大利代码来上来
先判断是不是Gif动画(甄别是不是老子的意大利炮)
如果是的话进行下载(装填炮弹)
这里Gif动画最后是存储到本地文件里面的
如果不是的话进行普通图片的下载(迫击炮准备)
最后不管是Gif还是png,都将其填充进去(开炮!!!)
和尚!你他娘的打歪了!!!
至此完毕~欢迎转载收藏以及cv操作。请注明出处
在晚上搜索半天,在github上面找到一个叫GifImageView的自定义控件
那么剩下的我们就只需要
1、判断是不是gif动画
1.1、如果是就下载并且填装进GifImageView里面
2、如果是png
2.1、下载并且填充
二营长,把老子的意大利代码来上来
先判断是不是Gif动画(甄别是不是老子的意大利炮)
final Guide_Result result = new Gson().fromJson(str, Guide_Result.class); // result.setMessage("http://img4.duitang.com/uploads/blog/201405/19/20140519115336_mQNyR.thumb.224_0.gif"); // result.setMessage("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"); // 获取图片bitmap后 // 如果网络和本地是同一张图片,什么都不做 // 如果不是同一张,下载网络上的图片替换到本地 // 如果是同一张,判断本地文件是否存在,不存在下载 if (result !=null ){ if (!RequestTool.ToMD5(result.getMessage()).equals((String) SPUtils.get(GuideActivity.this, "GuidePic", ""))) { File file = new File((String) SPUtils.get(GuideActivity.this, "GuidePic", "")); if (file.exists()) { Log.e("321", "file.exists()"); file.delete(); } new Thread(new Runnable() { @Override public void run() { SPUtils.put(GuideActivity.this, "GuidePic", RequestTool.ToMD5(result.getMessage())); File file = new File((String) SPUtils.get(GuideActivity.this, "GuidePic", "")); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } if (checkURL(result.getMessage())) ; { String suffix = result.getMessage().substring(result.getMessage().length() - 4, result.getMessage().length()); Log.e("3321", suffix); if (suffix.equals(".gif")) { saveGif(result.getMessage()); SPUtils.put(GuideActivity.this, "Picformat", ".gif"); } else { saveBitmap(result.getMessage()); SPUtils.put(GuideActivity.this, "Picformat", ".png"); } } } }).start(); } else { File file = new File((String) SPUtils.get(GuideActivity.this, "GuidePic", "")); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } new Thread(new Runnable() { @Override public void run() { SPUtils.put(GuideActivity.this, "GuidePic", RequestTool.ToMD5(result.getMessage())); if (checkURL(result.getMessage())) ; { String suffix = result.getMessage().substring(result.getMessage().length() - 4, result.getMessage().length()); Log.e("3321", suffix); if (suffix.equals(".gif")) { saveGif(result.getMessage()); SPUtils.put(GuideActivity.this, "Picformat", ".gif"); } else { saveBitmap(result.getMessage()); SPUtils.put(GuideActivity.this, "Picformat", ".png"); } } } }).start(); } }
如果是的话进行下载(装填炮弹)
try { URL iconUrl = new URL(url); URLConnection conn = iconUrl.openConnection(); conn.connect(); // 获得图像的字符流 InputStream is = conn.getInputStream(); byte[] b = getByte(is); File file = new File("/sdcard" + "/" + RequestTool.ToMD5(url)); FileOutputStream fileOutputStream = new FileOutputStream(file); fileOutputStream.write(b); fileOutputStream.close(); is.close();// 关闭流 } catch (Exception e) { e.printStackTrace(); }
private byte[] getByte(InputStream is) throws IOException { byte[] b = new byte[1024]; ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int len = -1; while ((len = is.read(b)) != -1) { byteArrayOutputStream.write(b, 0, len); } byteArrayOutputStream.close(); is.close(); return byteArrayOutputStream.toByteArray(); }
这里Gif动画最后是存储到本地文件里面的
如果不是的话进行普通图片的下载(迫击炮准备)
public void saveBitmap(String url) { Bitmap bm = null; Log.e("123", url.toString()); try { URL iconUrl = new URL(url); URLConnection conn = iconUrl.openConnection(); HttpURLConnection http = (HttpURLConnection) conn; int length = http.getContentLength(); conn.connect(); // 获得图像的字符流 InputStream is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is, length); bm = BitmapFactory.decodeStream(bis); bis.close(); is.close();// 关闭流 } catch (Exception e) { e.printStackTrace(); } ZZUtils.saveImageToGallery(bm, "/sdcard", RequestTool.ToMD5(url), false, false); }
最后不管是Gif还是png,都将其填充进去(开炮!!!)
iv = (GifImageView) findViewById(R.id.guide_iv); // 如果加载的是gif动图,第一步需要先将gif动图资源转化为GifDrawable // 将gif图资源转化为GifDrawable GifDrawable gifDrawable = null; // 如果是动态图进try方法,不是动态图抛出异常进入catch方法设置图片 File f = new File("/sdcard" + "/" + SPUtils.get(this, "GuidePic", "")); if (!f.exists()) { iv.setImageResource(R.mipmap.defaut_loading); } try { File file = new File("/sdcard" + "/" + SPUtils.get(this, "GuidePic", "")); Log.e("123", file.toString()); gifDrawable = new GifDrawable(file); // gifDrawable = new GifDrawable(getResources(), R.mipmap.bg_splash); // gif1加载一个动态图gif iv.setImageDrawable(gifDrawable); } catch (IOException e) { iv.setImageURI(Uri.parse("/sdcard" + "/" + SPUtils.get(this, "GuidePic", ""))); // iv.setImageBitmap(ZZUtils.getImagefromSD("filepath", (String) SPUtils.get(GuideActivity.this, "GuidePic", "" a7a9 ))); } // 如果是普通的图片资源,就像Android的ImageView set图片资源一样简单设置进去即可。 // gif2加载一个普通的图片(如png,bmp,jpeg等等) // iv.setImageResource(R.mipmap.b_xinwen_press); if (iv.getDrawable() == null) { iv.setImageResource(R.mipmap.defaut_loading); }
和尚!你他娘的打歪了!!!
至此完毕~欢迎转载收藏以及cv操作。请注明出处
相关文章推荐
- VC下加载JPG/GIF/PNG图片的两种方法(转)
- VC下加载JPG/GIF/PNG图片的两种方法
- 【VS开发】VC下加载JPG/GIF/PNG图片的两种方法
- delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法
- VC下加载JPG/GIF/PNG图片的两种方法
- Delphi 自带GIF控件的动画图片加载和播放
- SmartRefreshLayout刷新控件的使用方法 (刷新加载时用GIF动画)
- VC下加载JPG/GIF/PNG图片的两种方法
- VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
- VC下加载JPG/GIF/PNG图片的两种方法
- VC下加载JPG/GIF/PNG图片的两种方法(转)
- VC下加载JPG,JPEG,GIF,PNG图片最简单的方法
- Delphi 自带GIF控件的动画图片加载和播放
- VC下加载JPG/GIF/PNG图片的两种方法
- VC 下加载 JPGJPEGGIFPNG 图片最简单的方法
- [转]Delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法
- delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法
- beamer加载动画+gif导出多个png或者jpg图片
- delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法
- delphi显示 jpg、png、gif 图片及 gif 动画的方法