自定义ViewPager,用来解决PhotoView和ViewPager的滑动冲突

Android图片处理系列:Viewpager+PhotoView查看大量图片不oom,附有文字弹幕效果 ViewPager加载大量图片oom 阅读详情

转自:仿微信朋友圈图片查看-glide加载网络图片,photoview 实现缩放

这里实现的效果就和微信朋友圈点击图片后查看大图一样,如果你不清楚是什么效果,可以拿出手机,打开朋友圈,找到一条有很多图片的动态,点击图片进去。最终实现的效果就是这样的,多张图片滑动切换,并可缩放,拖动。

项目用到的第三方空间有:

glide,用来加载网络图片,google在自己应用里有用过这个东西。个人感觉十分好用,引入也简单。大公司出品,质量也有保证。

photoview:一个google工程师的个人项目,5k+的star,应该还算靠谱。其实我是无奈才用这个的,挑了很多个图片缩放的lib,其他和ViewPager都有滑动冲突问题,这个可以完美兼容。

本文开发环境是基于AS,Eclipse的朋友就需要自己调整了。整体构架是ViewPager+Fragment,一个图片一个Fragment显示,用Glide在Fragment里加载图片,图片的显示载体是PhotoView。下面上代码:

自定义ViewPager,用来解决PhotoView和ViewPager的滑动冲突,代码是作者提供的。

复制下面的代码,使用这个自定义的ViewPager即可解决PhotoView和ViewPager的滑动冲突报错的问题

package com.example.csonezp.imagezoomdemo;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

/**
 * Found at http://stackoverflow.com/questions/7814017/is-it-possible-to-disable-scrolling-on-a-viewpager.
 * Convenient way to temporarily disable ViewPager navigation while interacting with ImageView.
 * 
 * Julia Zudikova
 */

/**
 * Hacky fix for Issue #4 and
 * http://code.google.com/p/android/issues/detail?id=18990
 * <p/>
 * ScaleGestureDetector seems to mess up the touch events, which means that
 * ViewGroups which make use of onInterceptTouchEvent throw a lot of
 * IllegalArgumentException: pointerIndex out of range.
 * <p/>
 * There's not much I can do in my code for now, but we can mask the result by
 * just catching the problem and ignoring it.
 *
 * @author Chris Banes
 */
public class HackyViewPager extends ViewPager {

    private boolean isLocked;

    public HackyViewPager(Context context) {
        super(context);
        isLocked = false;
    }

    public HackyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        isLocked = false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (!isLocked) {
            try {
                return super.onInterceptTouchEvent(ev);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                return false;
            }
        }
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return !isLocked && super.onTouchEvent(event);
    }

    public void toggleLock() {
        isLocked = !isLocked;
    }

    public void setLocked(boolean isLocked) {
        this.isLocked = isLocked;
    }

    public boolean isLocked() {
        return isLocked;
    }

}
Android多图全屏浏览与手势缩放优化解决方案 在移动应用开发中,图片交互早已不再是简单的“点开即看”那么简单。从朋友圈长图连看、电商商品细节放大,到社交媒体中的沉浸式相册体验——用户对视觉呈现的要求越来越高。而市面上广泛使用的开源库PhotoView,虽然解决了基础的手势缩放问题,但在真实项目落地时却频频暴雷:连续加载高清大图直接OOM、多图滑动嵌套冲突、全屏浏览支持弱、自定义程度低……这些问题像一根根刺,扎在每一个追求极致体验的开发者心头。于是我们开始思考:能不能自己造一个轮子? 阅读详情

相关推荐

PhotoView和ViewPager实现图片左右滑动和放大缩小功能

PhotoView和ViewPager实现图片左右滑动和放大缩小功能

使用ViewPager和Photoview实现图片左右滑动和放大缩小

为了实现图片的左右滑动以及放大缩小的功能,用到了两个组件ViewPager和PhotoView。 PhotoView是开源项目,它也是通过继承ImageView然后扩充功能,实现图片放大缩小等功能;而加载网络图片用到了ImageLoader这个开源组件。 工欲善其事必先利其器,本案例通过Android Studio开发,所以首先需要引入包: 在Module的build.gradle文

wyb112233的专栏 1万+

完美兼容viewpager和photoview 滑动翻页 双击和手势缩放

实现利用viewpager和photoview实现图片轮播效果,完美兼容。解决了绝大部分常见BUG 可实现图片的双击放大,手势的缩放,图片的左右滑动效果 解决了图片放大后左右切换时与viewpager冲突的BUG 解决了图片放大查看后,切换完页面再切换回来时,图片没有还原原始大小的BUG 欢迎留言讨论!

viewpage显示服务器图片,ViewPager + PhotoView-->图片查看器,类似今日头条图片查看

新手,只有实现...这是类似于今日头条中很多图片的时候的图片查看效果,先上效果图 :由于图片大小限制,不能上传太长时间的图片,大致就是以上效果三步走战略 :1. 添加依赖 : (两个都要加,具体添加可以查看 PhoneView链接)project下 :allprojects {repositories {jcenter()maven { url "https://jitpack.io"}}}...

weixin_42186728的博客 455

photoView和viewPager的完美结合实现相册功能,支持收缩缩放,滑动到下一页上一页恢复默认大小

photoView和viewPager的完美结合实现相册功能,支持收缩缩放,滑动到下一页上一页恢复默认大小

photoview控件 可以实现放大缩小图片

实现放大缩小图片的控件

PhotoView使用及解决滑动冲突

前言 这是一个图片查看库,可以实现图片浏览功能,支持手势或者点击缩放的功能,支持在ViewPager中使用,允许应用程序通知照片上的用户点击 使用方法: 首先在根build.gradle文件添加 allprojects { repositories { maven { url "https://jitpack.io" } } } 然后在模块buil...

zkbilian的博客 2281

基于ImageView的多点触控,双击放大缩小以及结合ViewPager的事件冲突

本文通过一个自定义控件ZoomImageView,实现多点触控(移动,多点缩放),双击放大缩小,并在放大缩小过程自解决边界白边的情况,同时结合ViewPager的使用,并解决存在的事件冲突情况。

ViewPgaer和PhotoView的关联使用与冲突解决

1.在项目包中导入ImagerLoader和Photoview 的jar包 2.写一个工具类ImageLoaderUtils,把下边的代码复制到这个类当中,注意把包名换成自己的package com.xixiangfu.photoview.util; import java.io.File; import android.graphics.Bitmap.Config; import an

qq_36020854的博客 795

Android App中ViewPager所带来的滑动冲突问题解决方法

叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。 关于滑动冲突 滑动冲突分类: 滑动冲突,总的来说就是两类。 1.同方向滑动冲突 比如ScrollView嵌套ListView,或者是ScrollView嵌套自己 2.不同方向滑动冲突 比如ScrollView嵌套ViewPager,或者是ViewPager嵌套ScrollView,这种情况其实很典型。现在大部分应用最外层都是ViewPager+Fragment 的底部切换(比如微信)结构,这种时候,就很容易出现滑动冲突。不

完整版:ultralytics下运行yoloworld并训练

本文介绍了Ultralytics YOLO环境的快速配置与使用流程:1) 通过conda创建Python 3.9环境并安装依赖包;2) 配置中科大镜像源加速安装PyTorch和Ultralytics;3) 准备YOLO格式数据集并修改data.yaml配置文件;4) 提供模型预测、训练和验证的常用指令,包括predict/train/val等命令参数设置。文章还包含CLIP模型下载、权重文件获取以及本地安装等注意事项,完整覆盖了从环境搭建到模型部署的全过程。

weixin_50209871的博客 1344

Android 图片点击放大缩小手势操作以及解决Viewpager左右滑动与ImageView手势冲突导致左右滑动失效问题

在我的项目中,有点击图片banner后放大浏览的功能。我的做法就是创建一个专门的图片显示Activity,布局里面用ViewPage,这样就能控制图片的左右滑动,并且控制首先显示第几张图片。 功能是ok的,显示也是正常的。但我花费了好几天的时间来实现、完善这个功能。 ShowMoreImageActivity /** * 图片放大 */ public class ShowMoreImageActivity extends BaseActivity { @FindId(R.id.vp)

u014714188的博客 1879

星网锐捷语音网关密码重置恢复出厂设置

星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系...

cibazhanji2176的博客 1万+

viewPager+photoView实现图片轮播和手势缩放功能 支持手势缩放的imageView 如何实现相册左右滑动和手势缩放 如何让图片自适应控件大小 photoView如何使用(上)

很多朋友都可能遇到这这个问题,实现一个支持手势缩放的图片轮播功能。就像我们的手机相册一样。而且有时候还需要让图片拉伸自动充满全屏。 图片轮播我们自然而然,想到了viewPager+imageView来实现,但是想要实现手势缩放就遇到了很大的难度,imageView根本不支持缩放。 那么打造支持手势缩放的imageView那肯定就需要自定义了,网上...

简雨山舍 5882

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

本文详细介绍了企业微信群机器人Webhook的配置流程,从创建机器人到获取Webhook地址,再到发送各类消息的完整步骤。通过Python代码示例展示了文本、Markdown等消息类型的发送方法,并提供了性能优化建议和常见问题排查技巧,帮助企业高效实现自动化消息推送。

weixin_29208327的博客 6814

Navicat16/17数据库密码安全解析与实战解密指南

本文详细解析了Navicat 16/17版本中数据库密码的加密机制,并提供了实用的密码找回指南。通过导出连接文件获取加密密文,利用基于AES-128-CBC算法的本地HTML工具,可安全、离线地解密遗忘的密码。文章强调该方法仅适用于合法恢复自有密码,并给出了操作步骤与安全建议。

weixin_28835583的博客 461

Android 笔记 ViewPager的滑动与子view内部滑动事件的冲突问题

ViewPager 与子view的滑动冲突在上一次笔记中建设了一个可以滑动的photoView,显示图片,可以放大,滑动大部分时候这个自定义View会和ViewPager一起使用。也就是我们通常看到的相册里面的效果,滑动可以显示不同的图片。而在单页中,很多时候也需要滑动。这时候会和ViewPager产生冲突。最后的结果就是,横向滑动并不会滑动子view里面的内容,而是切换ViewPager的页面。

super_zq的博客 3550

MZI and MI Optical Waveguide(马赫曾德与迈克尔逊光波导)

注意,这里的 “镜子” 并不是真的在波导中做一个镜子出来,而是通过使用一个 1x2 的 MMI 结构将 MMI 输出的两个端口连接起来形成一个 “宽带镜子”。对于这里形成镜子的详细原理,后面有时间了我们再做更加详细地介绍。,它由一个 splitter 构成和两个仿佛带有 “镜子” 的臂组成。相比较于 MZI,光波可以在它的臂中传输,最终从进光口处出去得到相长或者相消干涉,很明显,在。)的折射率,从而使得两个臂上产生的相位差值不同,最终得到相长或者相消干涉的结果。这里,给大家介绍一下。,它更像是一个折叠的。

u011699626的博客 2446

实现将一个存放图片的集合赋值到Photoview中,并用Viewpager展示出来

实现将一个存放图片的集合赋值到Photoview中,并用Viewpager展示出来

Super Monster的博客 447

【PHP面试题29】什么是PHP-FPM?它与PHP和Nginx有什么关系

PHP面试专区。计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。PHP-FPM(FastCGI Process Manager)是PHP的FastCGI进程管理器,它是PHP 5.3.3及更高版本的一部分。它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能,并且可以与Web服务器(如Nginx、Apache等)进行通信。PHP-FPM是PHP的FastCGI进程管理器,它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能。

黑夜开发者的博客 1476

18、地下矿山中人工智能在区分真实微震事件与噪声信号的应用

本文提出一种基于遗传编程(GP)的新型经验模型,用于地下矿山中真实微震事件与噪声信号(特别是爆破信号)的自动区分。针对传统方法和常见机器学习算法存在的黑箱问题、过拟合及准确性不足等局限,GP模型通过符号回归和进化机制生成可解释的数学表达式,具备自动特征选择能力,有效提升了分类准确率。研究使用包含100个样本的真实数据库,结合敏感性分析优化模型参数,并与线性判别分析(LDA)进行对比,结果表明GP模型在分类性能上更具优势。该模型可应用于实时微震监测系统,提高矿山安全生产水平,降低误判带来的成本开销,具有良好的

assembly8low的博客 94

仿微信朋友圈图片查看-glide加载网络图片,photoview 实现缩放

http://www.cnblogs.com/csonezp/p/5083286.html 这里实现的效果就和微信朋友圈点击图片后查看大图一样,如果你不清楚是什么效果,可以拿出手机,打开朋友圈,找到一条有很多图片的动态,点击图片进去。最终实现的效果就是这样的,多张图片滑动切换,并可缩放,拖动。 项目用到的第三方空间有: glide,用来加载网络图片,google在自己应用里有用过这个东...

weixin_30435261的博客 364

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PhotoView与ViewPager完美集成指南:解决滑动冲突的终极方案

PhotoView是Android开发中一款强大的图片查看组件,它支持各种触摸手势实现图片缩放功能。然而在与ViewPager结合使用时,开发者常常会遇到滑动冲突问题。本文将详细介绍如何通过PhotoView官方提供的解决方案,轻松实现两者的无缝集成,让你的图片浏览体验更加流畅。 ## 📌 为什么会出现滑动冲突? 当PhotoView的缩放、拖动功能与ViewPager的左右滑动功能同时存在

gitblog_00660的博客 574

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PhotoView实现图片滑动切换效果

你是否在开发图片浏览功能时遇到过这些问题?普通ImageView无法支持手势缩放,ViewPager与图片缩放功能冲突,滑动切换时出现卡顿或崩溃?本文将带你使用PhotoView库轻松实现流畅的图片滑动切换效果,同时支持缩放、旋转等手势操作。读完本文,你将掌握PhotoView与ViewPager的集成方法,解决常见的滑动冲突问题,并了解如何优化图片加载性能。 ## 实现原理 PhotoVie...

gitblog_00219的博客 1098

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

告别Android图片浏览卡顿:PhotoView图片缩放库的终极解决方案

你是否曾经遇到过Android应用中图片浏览体验不佳的问题?双指缩放不流畅、图片滑动卡顿、或者与ViewPager等容器冲突导致应用崩溃?这些问题正是PhotoView图片缩放库要解决的痛点。PhotoView是一个专为Android设计的强大图片浏览组件,它让你的应用能够实现专业级的图片缩放和交互体验。 ## 🔍 问题:为什么Android原生图片浏览体验这么差? 在开发Android应用

gitblog_00819的博客 951
上一篇: 详细解读LruCache类
下一篇: 如何在ViewPager外部获取“当前显示的页面的位置position”
Android_Study_OK
博客等级 码龄11年 91粉丝 128原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值