android点击全屏预览照片第三方库使用

2023-05-16

android点击全屏预览照片第三方库使用-imgepreviewlibrary

移动端我们经常会遇到放大预览照片,如果是一张照片,那就全屏展示图片就好了,但是如果是一个列表,滑动查看,我们一般会借助viewpager进行实现,但是每次自己弄,感觉效率很低,今天给大家推荐一个第三方库,很轻松实现,扩展也还可以哦。

这是点击预览的效果图,下边是数字,也可以显示成点


微信截图_20180801172357.png
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

关注下方微信公众号,可以及时获取到各种技术的干货哦,如果你有想推荐的帖子,也可以联系我们的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android点击全屏预览照片第三方库使用 的相关文章

  • Linux VNC server 安装配置

    1 安装vnc server root 64 pxe yum install tigervnc server y 2 设置 vnc server 开机启动 root 64 pxe chkconfig vncserver on 3 修改vnc
  • 常用非关系型数据库产品介绍

    1 memcache memcache xff08 键值型数据库 xff09 memcache是把访问的数据存在内存里面 xff0c 外部访问现在内存里面找 xff0c 找不到再从数据库里面找 xff0c 可以减轻数据库的压力 xff0c
  • Webpack 4.X 从入门到精通 - devServer与mode(三)

    上一篇文章里详细介绍了一下插件的用法 xff0c 这一篇文章接着丰富module exports里的属性 如今的前端发展已经非常迅速了 xff0c 伴随而来的是开发模式的转变 现在已经不再是写个静态页面并放在浏览器里打开预览一下了 在实际的
  • 块状元素与内联元素的区别

    css中块状元素是一个重要的知识点 xff0c css下height和width不起作用使我们经常遇到的问题 xff0c 这就需要我们正确区分块状元素和内联元素 块状元素和内联元素的区分很简单 xff0c 我们只需要注意html元素是否排斥
  • vsftp 锁定用户目录

    vsftp 安装以后给用户权限和锁定目录 xff1b 关闭SELinux xff1a 修改 etc selinux config文件中的SELINUX 61 34 34 为 disabled xff0c 然后重启 如果不想重启系统 xff0
  • 解决使用WinScp连接Ubantu系统失败的问题---SSH无法连接

    起因 为了互通Linux系统和Windows系统的文件 xff0c 以更好的实现文件管理和资源共享 所以在查阅资料后 xff0c 使用WinScp xff0c WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端 它的
  • 一文让你明白CPU上下文切换

    我们都知道 xff0c Linux 是一个多任务操作系统 xff0c 它支持远大于 CPU 数量的任务同时运行 当然 xff0c 这些任务实际上并不是真的在同时运行 xff0c 而是因为系统在很短的时间内 xff0c 将 CPU 轮流分配给
  • HBase shell scan 过滤器用法总结

    比较器 xff1a 前面例子中的regexstring 2014 11 08 binary x00 x00 x00 x05 xff0c 这都是比较器 HBase的filter有四种比较器 xff1a xff08 1 xff09 二进制比较器
  • [Ubuntu] LightDM 轻量级桌面显示管理器

    LightDM xff08 Light Display Manager xff09 是一个全新的轻量级 Linux 桌面显示管理器 xff0c 而传统的 Ubuntu 是使用 GNOME 桌面标准的 GDM LightDM 是一个跨桌面显示
  • 算法笔记--区间素数筛

    筛 l r 之间的合数 l lt 61 r lt 61 1e12 r l lt 61 1e6 筛小于等于r的合数所需的质因子大小最多不会超过根号r xff08 lt 61 1e6 xff09 模板 const int N 61 1e6 43
  • 使用Formik轻松开发更高质量的React表单(四)其他几个API解析

    旧话重提 前文中我特别提起Redux Form以及redux form的问题 xff0c 我觉得学习Formik你不得不提它们 xff0c 当然还有它们的 老祖宗 React xff1b 既然选择了 xff0c 那么你必须按照这个方向走下去
  • Linuxmint-mate (Ubuntu) 远程连接配置

    不慎搞崩了一台 Ubuntu 服务器 xff0c 本文记录重装系统 远程桌面系统 SSH 系统 用户配置等过程 选择系统 xff1a linuxmint 18 1 mate 优点 xff1a 兼容 Ubuntu 16 04 更加可控 xff
  • linux脚本数组元素赋值,shell 数组赋值

    shell编程 xff0c 给数组赋值及两个数组初始化与比较 bin sh output files 61 cat outfiles for i 61 0 i lt output files 64 43 43 i do echo 34 ar
  • 【独家】一文读懂数据可视化

    前言 数据可视化 xff0c 是指将相对晦涩的的数据通过可视的 交互的方式进行展示 xff0c 从而形象 直观地表达数据蕴含的信息和规律 早期的数据可视化作为咨询机构 金融企业的专业工具 xff0c 其应用领域较为单一 xff0c 应用形态
  • 【知云】第三期:云计算的弹性体现在哪些方面?

    摘要 xff1a 很多用户非常想了解云计算的弹性体现在哪些方面 xff1f 本文中云计算布道师倪波 xff08 花名 xff1a 竹雾 xff09 就为大家进行答疑解惑 xff0c 谈一谈云计算所提供的计算 存储以及网络方面的弹性 想要看视
  • 计算机网络第1章(概述)

    计算机网络第1章 xff08 概述 xff09 1 1因特网概述1 网络 互连网 xff08 互联网 xff09 和因特网2 因特网发展的三个阶段3 因特网的标准化工作4 因特网的组成 1 2 三种交换方式1 电路交换 xff08 Circ
  • 液晶显示器点屏方法步骤及参数表

    一 一 六大主要电压 面板的六项所需的基本电压 面板将输入的电压转成所需的电压 1 VIN xff1a 3 3V 5 0V 12V 基本输入电源 2 VDDD xff1a 3 3V 各IC所需的电源电压 xff0c 电源IC 3 VDDG
  • 常用nodejs版本管理

    nodejs管理版本的模块叫 n 首先安装n模块 xff1a npm install g n n后面也可以跟随版本号 n v4 2 4 另外几个常用命令 npm v 显示版本 xff0c 检查npm 是否正确安装 npm install e
  • plink源码_Debian -- 在 sid 中的 plink 软件包详细信息

    whole genome association analysis toolset plink expects as input the data from SNP single nucleotide polymorphism chips
  • cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别) 转自CSDN

    https blog csdn net 10km article details 51731959 cmake 设置编译选项的讲究 add compile options和CMAKE CXX FLAGS的区别 2016年06月22日 09

随机推荐