GitHub链接

效果图先上。

implementation 'com.ycjiang:ImagePreview:2.3.5'

在Activity中初始化

  @Overridepublic void onCreate() {super.onCreate();ZoomMediaLoader.getInstance().init(new TestImageLoader());}

自定义图片加载配置类  TestImageLoader (Glide 4.0以上)

import android.content.Context;
import android.graphics.Bitmap;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.widget.ImageView;import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.transition.Transition;
import com.previewlibrary.loader.IZoomMediaLoader;
import com.previewlibrary.loader.MySimpleTarget;public class TestImageLoader implements IZoomMediaLoader {@Overridepublic void displayImage(@NonNull Fragment context, @NonNull String path, final ImageView imageView, @NonNull final MySimpleTarget simpleTarget) {Glide.with(context).asBitmap().load(path).apply(new RequestOptions().fitCenter()).into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {simpleTarget.onResourceReady();imageView.setImageBitmap(resource);}});}@Overridepublic void displayGifImage(@NonNull Fragment context, @NonNull String path, ImageView imageView, @NonNull final MySimpleTarget simpleTarget) {Glide.with(context).asGif().load(path)//可以解决gif比较几种时 ,加载过慢  //DiskCacheStrategy.NONE.apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE).dontAnimate())//去掉显示动画.listener(new RequestListener<GifDrawable>() {@Overridepublic boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {simpleTarget.onResourceReady();return false;}@Overridepublic boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {simpleTarget.onLoadFailed(null);return false;}}).into(imageView);}@Overridepublic void onStop(@NonNull Fragment context) {Glide.with(context).onStop();}@Overridepublic void clearMemory(@NonNull Context c) {Glide.get(c).clearMemory();}
}

自定义实体类


import android.graphics.Rect;
import android.os.Parcel;
import android.support.annotation.Nullable;import com.previewlibrary.enitity.IThumbViewInfo;/**** @author ludoven* @date 2020/4/22* Deprecated: 图片预览实体类**/
public class UserViewInfo implements IThumbViewInfo {//图片地址private String url;// 记录坐标private Rect mBounds;private String user = "用户字段";private String videoUrl;public UserViewInfo(String url) {this.url = url;}public UserViewInfo(String videoUrl,String url) {this.url = url;this.videoUrl = videoUrl;}public String getUser() {return user;}public void setUser(String user) {this.user = user;}@Overridepublic String getUrl() {//将你的图片地址字段返回return url;}public void setUrl(String url) {this.url = url;}@Overridepublic Rect getBounds() {//将你的图片显示坐标字段返回return mBounds;}@Nullable@Overridepublic String getVideoUrl() {return videoUrl;}public void setBounds(Rect bounds) {mBounds = bounds;}public void setVideoUrl(String videoUrl) {this.videoUrl = videoUrl;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(this.url);dest.writeParcelable(this.mBounds, flags);dest.writeString(this.user);dest.writeString(this.videoUrl);}protected UserViewInfo(Parcel in) {this.url = in.readString();this.mBounds = in.readParcelable(Rect.class.getClassLoader());this.user = in.readString();this.videoUrl = in.readString();}public static final Creator<UserViewInfo> CREATOR = new Creator<UserViewInfo>() {@Overridepublic UserViewInfo createFromParcel(Parcel source) {return new UserViewInfo(source);}@Overridepublic UserViewInfo[] newArray(int size) {return new UserViewInfo[size];}};
}

这里使用的是默认的预览,自定义预览详情见GitHub地址

                       List<UserViewInfo> stringList=new ArrayList<>();GPreviewBuilder.from(this).setData(stringList).setCurrentIndex(position).setSingleFling(true)//是否在黑屏区域点击返回.setDrag(true)//是否禁用图片拖拽返回.setType(GPreviewBuilder.IndicatorType.Number)//指示器类型.start();//启动

Android 点击图片全屏预览 -——ZoomPreviewPicture默认预览使用相关推荐

  1. Android 点击图片全屏

    2019独角兽企业重金招聘Python工程师标准>>> 最近做一个项目类似于QQ空间,做到照片浏览的功能,对于QQ空间中点击图片放大至全屏,感觉效果很赞,于是也做了个类似的效果.如下 ...

  2. android从九宫格全屏预览,仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图...

    AssNineGridView 仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图(可自定义). 写在前面 这是一个九宫格控件,本来是很久之前就写好了,现在才开源出来,也是看了很多优秀 ...

  3. 手机端点击图片全屏预览

    <!doctype html> 手机端点击图片全屏预览 <div class="category"><img src="1.jpg" ...

  4. html+js 点击图片放大、点击图片全屏

    html 点击图片放大,图片全屏,再点击关闭全屏,我这里直接整理成一个js,使用方便. 使用步骤: 1.引用 jq 2.引用 imgEnlarge.js. 3.没了. 直接上代码,这个是测试代码. & ...

  5. html实现点击图片全屏显示,用vue实现点击图片预览浏览器满屏大图

    前提 安装插件 npm install vue-directive-image-previewer -D 引入插件 import VueDirectiveImagePreviewer from 'vu ...

  6. android引导页图片全屏适配,关于图片适配不同尺寸的image View(实战)

    分享人:广州华软佐罗 一. 前言 在前端开发过程中,设计稿中往往只提供一张图片,但是app内需要用到的尺寸各种各样. 同时图片不仅是信息的直接表达,也会为网站起到美观点缀的作用,图片的变形.过分裁切会 ...

  7. Android 点击图片放大至全屏 再次点击关闭过度动画 Shared Element效果(共享元素效果)

    Android 点击图片放大至全屏 再次点击关闭过度动画 最近项目需要给用户一个体验优化,各种查阅,然后改了很多地方,类似于图片的点击预览,消息列表的点击流畅过渡. Shared Element效果( ...

  8. uni-app 轮播图视频+图片 视频图片全屏预览 两种方法

    项目场景: 在做商城项目的时候,商品详情的轮播图需要同时显示视频和图片,并且能够全局预览 解决方案: 如果项目里有uview这个组件库,可以通过swiper轮播图的指定类型进行解决,点击这里进行跳转 ...

  9. 微信小程序图片全屏预览组件,并解决svg真机显示黑屏问题

    自己码了个微信小程序图片全屏预览组件,并解决了svg真机显示黑屏问题(即png等格式可以正常显示,但就svg无法显示). /*** 微信小程序图片预览组件* 1.支持预览svg.png.jpeg.jp ...

  10. Android 图片全屏适配各种屏幕小技巧

    场景: App启动页加载一张从网络上下载的图片,全屏展示. 问题: 图片全屏展示如何适配各种屏幕? 解决方法: 1.图片周围采用高斯模糊处理,其他地方全部用白色填充. 2.图片周围采用白色渐变,其他地 ...

最新文章

  1. 安装HikVision(海康威视)网络摄像头
  2. 数据中心智能电源分配器(PDU)的趋势与应用
  3. 有三AI模拟面试服务上线,一对一服务助你求职
  4. PYTHON——TCPUDP:Socket实现远程执行命令
  5. mysql 建库字段_MySQL 的字段类型以及建库策略
  6. PingingLab传世经典系列《CCNA完全配置宝典》-2.7 EIGRP基本配置
  7. 人脸识别算法二:Fisherface(LDA)
  8. 符合推理的解决方法 NSlover
  9. 官宣!VS Code Python 全新功能全球首发!
  10. Security+ 学习笔记17 公钥基础设施
  11. Python学习---Python数据类型1206
  12. [译]Chipmunk教程 - 5 跟踪球体的运动
  13. 好用的论文翻译工具集锦
  14. Thinkphp 6.0商城系统,B2C商城系统全新UI
  15. 手机麦克风声音太大_让手机麦克风声音变大的软件
  16. 常用的操作系统有哪些?起什么作用?
  17. 恢复matlab文件关联
  18. ssdb mysql_成都项目中因为MYSQL与SSDB备分时间不一致,导致主键产生器错误解决一例...
  19. Word Embedding 知识总结
  20. android oreo 老机型,三年的老机型,一加手机1也有安卓8.0了!

热门文章

  1. 【JZOJ A组】Melancholy
  2. 团队管理31-典型场景(向上沟通)
  3. mybatis学习4
  4. php创建菜单_php实现微信公众号创建自定义菜单
  5. Flutter--高德地图使用指南
  6. win10固态硬盘分区 整数_台式机械硬盘怎么安装?机械硬盘安装图解教程(SATA固态可参考)...
  7. 今天学习腌菜,啦啦啦啦啦
  8. JavaScript在发送AjAX请求时,URL的域名地址是使用绝对地址还是相对地址?
  9. [MySQL 源码] Innodb Pessimistic Insert流程
  10. nginx根据post请求体内容转发