从零封装一个Android大图查看器

Posted Preacher_Qiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零封装一个Android大图查看器相关的知识,希望对你有一定的参考价值。

背景:

大图查看器是许多app的常用功能,主要使用场景是用户点击图片,然后启动一个新界面来展示完整尺寸的图片,并能通过手势移动图片以及放大缩小。当然,上面说的是最基本的功能,实际使用中还要包括:如果是本地图片应该可以移除,如果是网络图片,应提供一个保存到本地的功能等。

本文为什么叫封装一个大图查看器,而不是叫做编写一个大图查看器呢?因为大图查看器的最核心功能,展示图片以及手势操控我们使用了一个开源库来完成,这个开源库叫做subsampling-scale-image-view,sciv非常靠谱,使用也非常简单,我记得知乎的android app也是使用了它。这个库的Github地址是:subsampling-scale-image-view

我先把我做出来的效果图展示出来:

首先第一张是:


然后来看第二张:


两张界面截图展示的是同一张图片,但区别在于,第一张图片右下角有一个下载的图标,对应的是查看网络图片这种方式(大家都需要保存网络图片到本地这个功能);而第二张图片右下角没有了图标,而右上角有一个垃圾桶的图标,用来进行移除操作,想象一下,本来查看的就是本地图片,那用户也就不用再保存它一次了,而移除操作在很多实际使用场景中有效,比如说在微信中,你想发朋友圈,你选择了几张本地照片以后进行大图查看,而这时候你发现其中几张不太好,想移除它,于是为了用户方便,应该给用户提供一个在大图查看器中进行移除的方法。

具体实现:

首先,确定一下大体的实现方式

我决定使用一个全屏的Dialog来实现图片的查看界面,Dialog应该是最简洁的实现方式,因为用户可能打开大图查看后会快速的关掉,如果使用Activity,要在短时间内创建和销毁Activity好像开销比较大,而Fragment貌似是一个可以考虑的方式,但Fragment由于必须是嵌入在Activity中,因此要实现某些效果,例如遮挡Activity中的其它View比较麻烦,所以也不考虑。

以上是关于从零封装一个Android大图查看器的主要内容,如果未能解决你的问题,请参考以下文章

Android开发技巧——大图裁剪

微信分享大图遇到的问题(Android)

从零开始搭建Android组件化框架

Android性能优化 -- 大图治理

android 关于WebView点击图片展示大图

android 关于WebView点击图片展示大图