android点击全屏预览照片第三方库使用
android点击全屏预览照片第三方库使用-imgepreviewlibrary
移动端我们经常会遇到放大预览照片,如果是一张照片,那就全屏展示图片就好了,但是如果是一个列表,滑动查看,我们一般会借助viewpager进行实现,但是每次自己弄,感觉效率很低,今天给大家推荐一个第三方库,很轻松实现,扩展也还可以哦。
这是点击预览的效果图,下边是数字,也可以显示成点
1.安装配置
先添加依赖
implementation 'com.ycjiang:imgepreviewlibrary:1.1.3'
我们需要自定义一个类ImageLoader
,进行图片加载,不限制框架,一般使用glide,当然你也可以使用其他的。
public class ImageLoader implements IZoomMediaLoader { RequestOptions options; { options = new RequestOptions() .centerCrop() .placeholder(R.drawable.ic_default_image) .error(R.drawable.ic_default_image) .priority(Priority.HIGH); } @Override public void displayImage(Fragment context, String path, final MySimpleTarget<Bitmap> simpleTarget) { Glide.with(context) .asBitmap() .load(path) .apply(options) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) { simpleTarget.onResourceReady(resource); } @Override public void onLoadStarted(Drawable placeholder) { super.onLoadStarted(placeholder); simpleTarget.onLoadStarted(); } @Override public void onLoadFailed(Drawable errorDrawable) { super.onLoadFailed(errorDrawable); simpleTarget.onLoadFailed(errorDrawable); } }); } @Override public void onStop(@NonNull Fragment context) { Glide.with(context).onStop(); } @Override public void clearMemory(@NonNull Context c) { Glide.get(c).clearMemory(); } }
在初始化的时候,初始化图片加载类。
ZoomMediaLoader.getInstance().init(new ImageLoader());
2.项目使用
我们在点击的回调函数中,打开图片预览代码,根据自己的实际情况调整。
//组织数据 ArrayList<ThumbViewInfo> mThumbViewInfoList = new ArrayList<>(); // 这个最好定义成成员变量 ThumbViewInfo item; mThumbViewInfoList.clear(); for (int i = 0;i < resultList.size(); i++) { Rect bounds = new Rect(); //new ThumbViewInfo(图片地址); item=new ThumbViewInfo(resultList.get(i).getOriginUrl()); item.setBounds(bounds); mThumbViewInfoList.add(item); } //打开预览界面 GPreviewBuilder.from(Context context) //是否使用自定义预览界面,当然8.0之后因为配置问题,必须要使用 .to(ImageLookActivity.class) .setData(mThumbViewInfoList) .setCurrentIndex(position) .setSingleFling(true) .setType(GPreviewBuilder.IndicatorType.Number) // 小圆点 // .setType(GPreviewBuilder.IndicatorType.Dot) .start();//启动
3.自定义预览界面
自定义预览图片,可以扩展加一下自己的按钮功能等。
public class ImageLookActivity extends GPreviewActivity { /*** * 重写该方法 * 使用你的自定义布局 **/ @Override public int setContentLayout() { return R.layout.activity_image_look; } }
自定义预览的布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity.ImageLookActivity"> // 这是第三方库提供的,也就是默认的布局文件 <include layout="@layout/activity_image_preview_photo"/> </FrameLayout>
关注
如果有问题,请在下方评论,或者加群讨论 200909980
关注下方微信公众号,可以及时获取到各种技术的干货哦,如果你有想推荐的帖子,也可以联系我们的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
3.2 自定义控件基础 之 View的测量
本文对应项目的码云地址:https://gitee.com/wanchuanxy/AndroidHeroesTest/tree/master/3/SystemWidget 在现实生活中,如果我们去画一个图形,就必须知道它的大小和位置。Android系统在绘制View之前也必须对View进行测量,即告诉系统该画一个多大的View。这个过程在onMeasure()方法中进行。 Android系统给我们提供了一个设计短小精悍却功能强大的类----MeasureSpec类,我们可通过它来测量View。MeasureSpec是一个32位的值,其中高2位为测量的模式,低30位为测量的大小,在计算中使用位运算的原因是为了提高并优化速率。 测量模式为以下三种。 EXACTLY 即精确值模式,当我们将控件的layout_width或layout_height属性设定为具体数值时,比如android:layout_width="100dp",或者指定为match_parent属性时(占据父View的大小),系统使用的是EXACTLY模式。 AT_MOST 即最大值模式,当控件的layout_width或l...
- 下一篇
Flutter 05: 图解修改应用名称及图标
小菜有个臭毛病就是新建的项目都会优先更改一下项目名称,按照自己喜欢的名字定义,当然包括 Logo 也修改一下。刚接触 Flutter,语法都还没有了解,一切都是未知,单就改个项目名称也耽误了不少功夫,现在整理一下。 Flutter 在新建过程中的 project name 即为默认的应用名称,现在想要修改,尝试如下: 默认创建时 project name 解决方式 修改 lib/main.dart 中 title 内容,但是应用的名称并未修改;小菜理解为应用内名称,当应用处于切换状态时,展示的为 title 名称,而此时桌面应用名称未改变,如图: 切换时 title Flutter Project Name.png 小菜找了好久,以为 Flutter 是跨平台应用,对应 Android 和 iOS 的 project name 是统一修改的,可是小菜我理解错了,应用名称是需要在 Android 和 iOS 中分别调整的;Android 是在 AndroidManifest.xml 中修改;iOS 则是在 Info.plist 中修改的;如图:Tip: 在 Android 和 iOS 中...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 2048小游戏-低调大师作品