缩略视图到原视图的无缝过渡转变

从缩略图到原图无缝过渡转变的神奇组件 作者Hitomis,源码transferee,transferee 可以帮助你完成从缩略图到原图的无缝过渡转变,功能体系仿照并涵盖 ios 版本的 QQ、微信朋友圈、新浪微博的图片浏览功能。 立即下载

https://github.com/Hitomis/transferee

transferee 可以帮助你完成从缩略视图到原视图的无缝过渡转变, 优雅的浏览普通图片、长图、gif图、视频等不同格式的多媒体。

支持的功能:

  • 支持视频预览
  • 支持 Gif 图预览
  • 支持大长图预览
  • 支持拖拽关闭
  • 支持自定义页面索引指示器
  • 支持自定义资源加载进度条
  • 支持自定义图片加载器[目前已经有 UniversalImageLoader / GlideImageLoader / PicassoImageLoader]
  • 支持图片保存
  • 支持预览图片缩放,拖动,旋转等手势操作
  • 缩略图到大图或者大图到缩略图的无缝过渡动画,无缩略图信息时,自动改变动画的行为为平移过渡->加载大图->伸展图片动画
  • 支持傻瓜式绑定 RecyclerView / ListView / GridView / ImageView
  • 支持不绑定任何 View, 即可启动 transferee
// 添加所有 module  [包括 Transferee、GlideImageLoader、PicassoImageLoader、UniversalImageLoader]
implementation 'com.github.Hitomis:transferee:1.6.1'

// 单独添加核心 module Transferee, 之后至少还需要添加以下三种图片加载器中的一种
implementation 'com.github.Hitomis.transferee:Transferee:1.6.1'

// 添加 Glide 图片加载器
implementation 'com.github.Hitomis.transferee:GlideImageLoader:1.6.1'

// 添加 Picasso 图片加载器
implementation 'com.github.Hitomis.transferee:PicassoImageLoader:1.6.1'

// 添加 Universal 图片加载器
implementation 'com.github.Hitomis.transferee:UniversalImageLoader:1.6.1'

 

如果针对单个 ImageView 使用,将非常简单:

Transferee transfer = Transferee.getDefault(context);
transfer.apply(TransferConfig.build()
        .setImageLoader(UniversalImageLoader.with(getApplicationContext()))
        .setSourceUrlList(SourceConfig.getMixingSourceGroup())
        .create()
).show());

// 离开页面不要忘记调用
transfer.destroy();

如果你需要更多的功能,下面是 transferee 完整的使用示例:

step 1: 一个页面只创建一个 transferee 示例 (建议写在 onCreate 方法中)

transferee = Transferee.getDefault(context);

step 2: 为 transferee 创建参数配置器

TransferConfig config = TransferConfig.build()
       .setSourceImageList(sourceUrlList) // 资源 url 集合, String 格式
       .setSourceUriList(sourceUriList) // 资源 uri 集合, Uri 格式
       .setMissPlaceHolder(R.mipmap.ic_empty_photo) // 资源加载前的占位图
       .setErrorPlaceHolder(R.mipmap.ic_empty_photo) // 资源加载错误后的占位图
       .setProgressIndicator(new ProgressPieIndicator()) // 资源加载进度指示器, 可以实现 IProgressIndicator 扩展
       .setIndexIndicator(new NumberIndexIndicator()) // 资源数量索引指示器,可以实现 IIndexIndicator 扩展
       .setImageLoader(GlideImageLoader.with(getApplicationContext())) // 图片加载器,可以实现 ImageLoader 扩展
       .setBackgroundColor(Color.parseColor("#000000")) // 背景色
       .setDuration(300) // 开启、关闭、手势拖拽关闭、显示、扩散消失等动画时长
       .setOffscreenPageLimit(2) // 第一次初始化或者切换页面时预加载资源的数量,与 justLoadHitImage 属性冲突,默认为 1
       .setCustomView(customView) // 自定义视图,将放在 transferee 的面板上
       .setNowThumbnailIndex(index) // 缩略图在图组中的索引
       .enableJustLoadHitPage(true) // 是否只加载当前显示在屏幕中的的资源,默认关闭
       .enableDragClose(true) // 是否开启下拉手势关闭,默认开启
       .enableDragHide(false) // 下拉拖拽关闭时,是否先隐藏页面上除主视图以外的其他视图,默认开启
       .enableDragPause(false) // 下拉拖拽关闭时,如果当前是视频,是否暂停播放,默认关闭
       .enableHideThumb(false) // 是否开启当 transferee 打开时,隐藏缩略图, 默认关闭
       .enableScrollingWithPageChange(false) // 是否启动列表随着页面的切换而滚动你的列表,默认关闭
       .setOnLongClickListener(new Transferee.OnTransfereeLongClickListener() { // 长按当前页面监听器
            @Override
            public void onLongClick(ImageView imageView, String imageUri, int pos) {
                saveImageFile(imageUri); // 使用 transferee.getFile(imageUri) 获取缓存文件保存,视频不支持
            }
        })
       .bindImageView(imageView, source) // 绑定一个 ImageView, 所有绑定方法只能调用一个
       .bindListView(listView, R.id.iv_thumb) // 绑定一个 ListView, 所有绑定方法只能调用一个
       .bindRecyclerView(recyclerView, R.id.iv_thumb)  // 绑定一个 RecyclerView, 所有绑定方法只能调用一个

step 3: 显示 transferee

transferee.apply(config).show();

step 4: 离开页面的时候需要销毁 transferee 中的资源,防止内存泄漏 (建议写在 onDestroy 方法中)

transferee.destroy()

 

Config

属性说明
sourceUrlList将要预览的资源 url 集合, String 格式
sourceUriList将要预览的资源 uri 集合, Uri 格式
nowThumbnailIndex缩略图在图组中的索引, 如果你绑定了 ListView 或者 RecyclerView,这个属性是必须的,否则可以忽略; 亦或可以作为打开 transferee 时指定初始化显示页面的 position
offscreenPageLimit显示 transferee 时初始化加载的资源数量, 默认为1, 表示第一次加载3张(nowThumbnailIndex, nowThumbnailIndex + 1, nowThumbnailIndex - 1); 值为 2, 表示加载5张。依次类推
missPlaceHolder缺省的占位图,资源 id 格式。资源未加载完成时默认显示的图片
missDrawable缺省的占位图,Drawable 格式。资源未加载完成时默认显示的图片
errorPlaceHolder加载错误的占位图,资源 id 格式。原图加载错误时显示的图片
errorDrawable加载错误的占位图,Drawable 格式。原图加载错误时显示的图片
backgroundColortransferee 显示时,transferee 背景色
duration开启、关闭、手势拖拽关闭、透明度动画显示、扩散消失等动画的时长
justLoadHitPage是否只加载当前页面中的资源。如果设置为 true,那么只有当 transferee 切换到当前页面时,才会触发当前页面的加载动作,否则按 offscreenPageLimit 所设置的数值去做预加载和当前页面的加载动作,默认关闭
enableDragClose是否支持向下拖拽关闭,默认开启
enableDragHide拖拽关闭时是否隐藏除主视图以外的其他 view, 默认开启
enableDragPause拖拽关闭时是否暂停当前页面视频播放, 默认关闭
enableHideThumb是否开启当 transferee 打开时,隐藏缩略图,默认开启
enableScrollingWithPageChange是否启动列表随着 page 的切换而滚动,仅仅针对绑定 RecyclerView/GridView/ListView 有效, 启动之后因为列表会实时滚动,缩略图 view 将不会出现为空的现象,从而保证关闭 transferee 时为过渡关闭动画, 默认关闭
progressIndicator资源加载进度指示器 (默认内置 ProgressPieIndicator 和 ProgressBarIndicator)。可实现 IProgressIndicator 接口定义自己的资源加载进度指示器
indexIndicator资源索引指示器 (默认内置 CircleIndexIndicator 和 NumberIndexIndicator)。可实现 IIndexIndicator 接口定义自己的资源索引指示器
imageLoader资源加载器。可实现 ImageLoader 接口定义自己的图片加载器
imageIdRecyclerView 或者 ListView 的 ItemView 中的 ImageView id
customView用户自定义的视图,放置在 transferee 显示后的面板之上
listView如果你是使用的 ListView 或者 GridView 来排列显示图片,那么需要将你的 ListView 或者 GridView 传入 bindListView() 方法中
recyclerView如果你使用的 RecyclerView 来排列显示图片,需要将 RecyclerView 传入 bindRecyclerView() 方法中
imageView如果只想对单个 ImageView 使用此库的功能,或者界面上单个的 ImageView 是相册的封面,那么使用 bindImageView(...) 或者它的重载方法可以满足你的需求

 

Method

方法说明
getDefault(context)获取 transferee 实例
apply(config)将配置参数对象应用到 transferee 实例中
show()打开/显示 transferee
show(listener)打开/显示 transferee,并监听显示/关闭状态
isShown()transferee 是否显示
dismiss()关闭 transferee
clear()清除图片和视频等所有缓存文件
destroy()销毁 transferee 使用到的资源, 防止内存泄漏
getImageFile(url)获取与 url 对应的缓存图片
setOnTransfereeStateChangeListener(listener)设置 transferee 显示/关闭状态改变的监听器
Android图片查看器 用于android开发者开发自定义相册,使用glide加载图片。 立即下载

相关推荐

Android代码-transferee

Transferee transferee 可以帮助你完成从缩略图到原图的无缝过渡转变,功能体系仿照并涵盖 ios 版本的 QQ、微信朋友圈、新浪微博的图片浏览功能。 transferee 支持两种模式: 只有原图,就是说九宫格列表中的图片和全屏显示的大图其实来源于一张图片。详见 GlideNoThumActivity 和 UniversalNoThumActivity 既有原图,又有缩略图,例如我司使用了阿里云的图片裁剪功能提供了缩略图来源,在列表页使用阿里云裁剪后的缩略图,优化列表数据流量和流畅度,同时又能在详情页或者图片查看器中显示大图。这种情况下也是 transferee 最适合的模式。详见UniversalNormalActivity 在使用 transferee 组件的时候,还需要注意一些问题: 由于不同 ImageLoader 的缓存和图片加载策略不同,所以在使用目前 transferee 中内置的 Glide 或者 Universal-Image-Loader 时,所支持的功能体系也是不一样的: 使用 Glide 作为 transferee 的图片加载器时,不支持

Android 图片预览模仿朋友圈查看图片效果放大图片,左右滑动 - transferee

Android 图片预览模仿朋友圈查看图片效果放大图片,左右滑动 - transferee 使用框架:transferee 来实现 这里采用的是transferee的glide方法:https://github.com/Hitomis/transferee/blob/master/ap

Beluga_白鲸 1万+

Android代码-一个简单仿微信朋友圈的图片查看器

PhotoViewer 该图片查看器是模仿微信朋友圈查看图片编写             allprojects { repositories { ... maven { url 'https://jitpack.io' } } } lastRelease: dependencies { implementation 'com.github.wanglu1209:PhotoViewer:lastRelease' } 使用 点击多张图片(类似微信朋友圈查看图片) PhotoViewer .setData(图片链接List) .setCurrentPage(现在是哪页) .setImgContainer(img的容器 rv/gv/lv) .setShowImageViewInterface(obj

android模仿朋友圈点击图片放大,Android 使用 transferee 模仿朋友圈查看图片效果放大图片,左右滑动...

package com.hitomi.transferimage.activity.glide;import android.view.View;import android.widget.GridView;import android.widget.ImageView;import android.widget.Toast;import com.bumptech.glide.Glide;impo...

weixin_42131342的博客 579

Android 仿百度手机助手首页滑动效果 demo代码

http://blog.csdn.net/cml_blog/article/details/46708625

MAX30102心率血氧传感器

估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。

qq_41861711的博客 1万+

一个帮助您完成从缩略图到原图无缝过渡转变的神奇组件

transferee 项目地址:Hitomis/transferee  简介:transferee 可以帮助你完成从缩略图到原图的无缝过渡转变,功能体系仿照并涵盖 ios 版本的 QQ、微信朋友圈、新浪微博的图片浏览功能。 transform-imageview-imageloader-qq-sina-weixin- transferee 可以帮助你完成从缩略图到原图的无缝过渡转变,功能体...

未来很长,但我会努力的走下去。 2506

Python实战:5分钟搞定高德地图API批量地址转经纬度(附完整代码)

本文提供了一套完整的Python解决方案,利用高德地图Web服务API,实现批量地址到经纬度坐标的自动化转换。文章包含从API申请、核心代码编写到错误处理与性能优化的全流程实战指南,并附赠数据可视化方法,帮助数据分析师和开发者快速提升地理信息处理效率。

weixin_29047919的博客 582

【Android】ImageView实现可选择、裁剪、删除、全屏查看(一)

目前效果图是长这样的 ↓ ,然后包含的功能有选择、裁剪、删除与全屏查看。最近正在学习kotlin,因此我干脆做了两个代码版本的demo,后期如果有时间,会在该功能的基础上再加上一些功能 用到的框架: // 图片裁剪 UCrop implementation 'com.github.yalantis:ucrop:2.2.5' // 全屏查看图片 Transferee implementation 'com.github.Hitomis.transferee:Transferee:v1.1.0'

宾有为的博客 1916

最新打赏系统打赏源码麒麟最新打赏源码喜盈门打赏知识付费课程教程直播讲解

打赏源码打赏系统

qq_41095398的博客 2032

nRF52811墨水屏时钟DIY:从全刷到局刷的实战改造指南(附完整代码)

本文详细介绍了如何将基于nRF52811的墨水屏时钟从耗电的全屏刷新模式改造为高效的局部刷新模式。通过剖析全刷与局刷的原理差异,提供了从工程架构、驱动层适配到应用层逻辑重构的完整实战指南,并附上关键代码示例。改造后,设备功耗显著降低,续航大幅提升,同时解决了视觉闪烁问题,是DIY低功耗墨水屏应用的实用参考。

weixin_29194693的博客 354

Android 图片加载库之Coil的详解与使用

Android 图片加载库之Coil的详解与使用

7859

用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6

@用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6 一, 目前得到的 Proteus8.9版本软件能够支持的Cortex-M4固件库项目,只能到达STM32F401VE (如下图1所示)。 (图1) 作为ST公司Cortex-M4更为广泛应用的F407,F429系列芯片;现在的Proteus8.9版本软件还没有固件库支持,不能...

kaillen的博客 3万+

Glide秒开体验:从缩略图到高清图的丝滑过渡动画

你是否遇到过这样的尴尬场景:打开图片时先显示模糊的小图,加载完成后突然跳变到清晰大图,整个过程闪烁卡顿?作为Android开发者,这种体验问题不仅影响用户留存,更会让精心设计的界面质感大打折扣。本文将带你用Glide实现从缩略图到高清图的无缝过渡动画,只需3步即可让图片加载过程如丝般顺滑。读完本文你将掌握:Glide双图加载原理、3行核心代码实现过渡动画、内存优化实战技巧。 ## 为什么需要过渡...

gitblog_00304的博客 328

从零开始STM32cubeide学习

使用的是正点原子的精英版,单片机是STM32F103ZET6,详细讲解完成跑马灯实验

weixin_44077208的博客 2280

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

此时我们的卡顿优化基本完成了,我们应该要考虑内存是否会泄漏,如果大家不知道哪些需要回收可以用leakcanary和android profiler进行内存检测,看代码有没有内存泄漏。

龚礼鹏的博客 2546

FileBrowser Quantum视图模式切换:列表/网格视图无缝转换

你是否曾经在浏览大量文件时,需要在不同的视图模式之间频繁切换?FileBrowser的Quantum视图模式切换功能为你提供了极致的文件浏览体验,让你在列表视图和网格视图之间实现无缝转换,大幅提升工作效率。 ## ???? 视图模式的核心价值 FileBrowser支持四种不同的视图模式,每种模式都针对特定的使用场景进行了优化: | 视图模式 | 适用场景 | 核心优势 | |---------...

gitblog_00854的博客 788

外部PLC触发VisionMaster多流程运行

上一讲,介绍了海康VisionMaster与西门子PLC1200进行S7通信。在前一讲的基础上,讲解如何通过PLC触发,实现VisionMaster的多流程运行。

haier123888的博客 4653

探索TransformationLayout:实现视图、活动和片段的华丽转变

在现代移动应用设计中,用户体验的流畅性和视觉吸引力至关重要。`TransformationLayout` 是一个强大的开源项目,它允许开发者通过容器变换动画,将视图、活动和片段无缝地转换为其他组件。无论是从浮动按钮到卡片视图,还是从一个活动到另一个活动的过渡,`TransformationLayout` 都能提供平滑且引人注目的动画效果。 ## 项目技术分析 `TransformationLa...

gitblog_00262的博客 759

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

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

5分钟搞定多引擎缩略图:copyparty的Pillow/FFmpeg无缝切换指南

你是否还在为文件服务器的缩略图生成速度慢、格式支持少而烦恼?本文将带你一文掌握copyparty的多引擎图像处理方案,通过Pillow与FFmpeg的灵活配置,轻松应对图片、视频、音频的缩略图生成需求。读完本文你将学会: - 两种引擎的核心差异与适用场景 - 3步完成缩略图服务配置 - 实战案例:从配置到前端展示的全流程 ## 引擎架构解析 copyparty采用模块化设计,通过插件系统实现多...

gitblog_00506的博客 960

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 图片浏览器 布局,GitHub - iielse/imageviewer: A simple and customizable Android full-screen image vi...

Imageviewer提供查看缩略视图到原视图的无缝过渡转变的视觉效果,优雅的浏览普通图、长图、动图.主要功能过渡动画 缩略图到大图或大图到缩略图时提供无缝衔接动画浏览手势 浏览大图时可使用常势操用手.如缩放图片等.(PhotoView)Video 支持Video加载 (SimpleExoPlayer)拖拽关闭 对大图进行上/下滑操作退出浏览.数据分页加载 在浏览大图的情况下异步加载百万数据.自定...

weixin_35869703的博客 409

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Windows系统HEIC缩略图解决方案:从技术痛点到无缝体验

为何开发者在Windows环境处理HEIC文件时频频遭遇接口调用失败?企业IT管理员如何应对设计团队反馈的"文件预览空白"投诉?普通用户为何宁愿耗费双倍存储空间也要转换格式?这些看似孤立的问题,共同指向Windows系统对HEIC格式的原生支持缺失这一核心矛盾。 开发者面临的是API层面的兼容性挑战,现有系统接口无法直接解析HEIC元数据;企业IT团队则承受着用户 productivity 损失

gitblog_00627的博客 275

BrowserSync 多端同步指南:改一处,多台设备实时刷新

BrowserSync 跑在 Node.js 上,是个开源工具,专门把你在开发机上改的网页,实时同步到同一网段里的多台浏览器和设备。写一行代码,全部屏幕跟着变。它最适合正在做响应式站点、需要边写边在真机上验证的前端开发。 ## 省掉的手动刷新:刷新、滚动、点击、表单一次全联动 用它之前,改个 CSS 要在电脑刷一下、手机上再刷一下,滚到一半的位置还对不上。BrowserSync 把这些重复劳动

gitblog_00741的博客 392

Windows STL文件预览终极解决方案:高效3D模型缩略图工具

在3D设计和工程领域,STL文件的日常管理常常成为工作效率的瓶颈。传统的解决方案要求用户必须打开专业的3D建模软件才能查看模型内容,这不仅耗时耗力,还严重影响了工作流程的连续性。现在,一款基于Windows Shell Extension技术的高效STL缩略图工具应运而生,彻底改变了这一现状。 ## 技术实现原理与架构设计 ### Windows Shell Extension核心机制 该工具

gitblog_01197的博客 1035

Windows HEIC缩略图扩展:让苹果图像格式在PC端无缝预览

在数字生态系统中,HEIC(高效图像格式)已成为苹果设备的默认图像标准,其卓越的压缩算法能在保持高质量的同时减少40-60%的存储空间。然而,当这些高效图像传输到Windows系统时,用户往往面临一个普遍痛点:资源管理器无法生成HEIC文件的缩略图预览,导致文件管理效率大幅降低。windows-heic-thumbnails作为一款开源系统插件,通过扩展Windows Shell功能,实现了HEI

gitblog_00616的博客 434
上一篇: 富文本自定义文本控件YCCustomText
下一篇: AndroidStudio 出现No IDEA annotations attached to the JDK 1.8 问题
code_dream_wq
博客等级 码龄10年 51粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值