Android Glide 获取动图的第一帧

ops/2024/9/20 2:32:05/ 标签: glide

一、说明

Glide 可以加载 2 种动图,一种是 Gif 图,另一种是 Webp 动图。

有时候我们需要获取动图的第一帧,并以封面的形式显示,那该怎样获取呢?

二、获取 Webp 第一帧

我这儿的 Webp 显示用到了一个三方库:

"com.github.zjupure:webpdecoder:2.3.$glideVersion"

获取第一帧:

Glide.with(context).asDrawable().load(url).optionalTransform(WebpDrawable.class, new WebpDrawableTransformation(new CenterCrop())).into(new CustomTarget<Drawable>() {@Overridepublic void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {if (resource instanceof WebpDrawable) {// 从 webp 图片中获取第一帧WebpDrawable webpDrawable = (WebpDrawable) resource;Bitmap bitmap = webpDrawable.getFirstFrame();}}@Overridepublic void onLoadCleared(@Nullable Drawable placeholder) {}});

三、获取 Gif 第一帧

场景 1:直接显示到 ImageView

Glide.with(context).setDefaultRequestOptions(new RequestOptions().frame(1)).load(url).into(imageView);

可以通过 setDefaultRequestOptions(new RequestOptions().frame(1)) 来设置获取第一帧。

场景 2:获取第一帧 bitmap

Glide.with(context).asBitmap().load(url).into(new CustomTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {// resource 即为第一帧的图片}@Overridepublic void onLoadCleared(@Nullable Drawable placeholder) {}});

请求 Gif 的时候我们用 bitmap 接收,Glide 发现目标类型无法承载整个 Gif 资源,就会拿第一帧给你,这样你也就获取到了第一帧。


http://www.ppmy.cn/ops/17997.html

相关文章

网络防火墙技术知多少?了解如何保护您的网络安全

在当前以网络为核心的世界中&#xff0c;网络安全成为了至关重要的议题。网络防火墙是一种常见的保护网络安全的技术&#xff0c;用于监控和控制网络流量&#xff0c;阻止未经授权的访问和恶意活动。今天德迅云安全就带您了解下防火墙的一些相关功能和类型。 防火墙的五个功能…

离线数仓数据导出-hive数据同步到mysql

离线数仓数据导出-hive数据同步到mysql MySQL建库建表数据导出 为方便报表应用使用数据&#xff0c;需将ads各指标的统计结果导出到MySQL数据库中。 datax支持hive同步MySQL&#xff1a;仅仅支持hive存储的hdfs文件导出。所以reader选hdfs-reader&#xff0c;writer选mysql-wri…

靠这套 Pytest 接口自动化测试框架,击败了99%的人

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Pytest 的下载安装 1、Python3 使用 pip install -U pytest 安装 2、查看 pytest 版本信息 py…

如何看待AIGC技术?

如何看待AIGC技术&#xff1f; 简介&#xff1a;探讨AIGC技术的发展现状和未来趋势。提醒&#xff1a;在发布作品前&#xff0c;请把不需要的内容删掉。 方向一&#xff1a;技术应用 提示&#xff1a;分享AIGC技术在各个领域的应用情况&#xff0c;以及对未来社会的影响和可能…

http基础了解

超文本传输协议&#xff08;HTTP&#xff09;是一个用于传输超媒体文档&#xff08;例如 HTML&#xff09;的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的&#xff0c;但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型&#xff0c;客户端打开一个连…

【FineBI】强大处理、分析和可视化数据的工具

文章目录 前言功能丰富的数据处理深入的数据分析交互式的数据可视化协作与共享无缝的集成 总结 前言 在当今数据驱动的商业环境中&#xff0c;企业需要强大的工具来处理、分析和可视化数据&#xff0c;以便做出更明智的决策。FineBI就是这样一个工具&#xff0c;它是一个全面的…

【AIGC调研系列】Bunny-Llama-3-8B-V与其他多模态大模型相比的优劣

Bunny-Llama-3-8B-V作为基于Llama-3的多模态大模型&#xff0c;其优势主要体现在以下几个方面&#xff1a; 性能超越其他模型&#xff1a;根据我搜索到的资料&#xff0c;Bunny-Llama-3-8B-V在多个主流Benchmark上表现良好&#xff0c;超越了LLaVA-7B、LLaVA-13B、Mini-Gemini…

windows下git提交修改文件名大小写提交无效问题

windows系统不区分大小写&#xff0c;以及git提交忽略大小写&#xff0c;git仓库已存在文件A.js&#xff0c;本地修改a.js一般是没有提交记录的&#xff0c;需要手动copy一份出来A.js&#xff0c;再删除A.js文件提交仓库删除后&#xff0c;再提交修改后的a.js文件。 windows决…

如何查看自己的公网IP?

我们在网络中&#xff0c;每一个设备都被分配了一个唯一的IP地址&#xff0c;用以区分和识别其他设备。公网IP地址是指可被公众访问的IP&#xff0c;是因特网上的全球唯一标识。当我们需要查看自己的公网IP时&#xff0c;可以采取以下几种方式。 使用命令行查看公网IP 在Windo…

C++/python之设计模式(1)之什么是单例模式

C/python之设计模式&#xff08;1&#xff09;之什么是单例模式 注&#xff1a;整理一些突然学到的C、python知识&#xff0c;随时mark一下 例如&#xff1a;忘记的关键字用法&#xff0c;新关键字&#xff0c;新数据结构 设计模式整理 C/python之设计模式&#xff08;1&#x…

富唯智能:打造未来机器人教育新标杆

随着科技的飞速发展&#xff0c;机器人教育正逐渐成为培养未来人才的重要领域。富唯智能&#xff0c;作为业内领先的机器人技术提供商&#xff0c;近日推出了一款全新的机器人教育实践平台系统&#xff0c;旨在为学生提供更加丰富、更具挑战性的学习体验。 该平台系统以AUBO-i5…

记账本React案例(Redux管理状态)

文章目录 整体架构流程 环境搭建 创建项目 技术细节 一、别名路径配置 1.路径解析配置&#xff08;webpack&#xff09; &#xff0c;将/解析为src/ 2.路径联想配置&#xff08;vsCode&#xff09;&#xff0c;使用vscode编辑器时&#xff0c;自动联想出来src文件夹下的…

【声网】实现web端与uniapp微信小程序端音视频互动

实现web端与uniapp微信小程序端音视频互动 利用声网实现音视频互动 开通声网服务 注册声网账号 进入Console 成功登录控制台后&#xff0c;按照以下步骤创建一个声网项目&#xff1a; 展开控制台左上角下拉框&#xff0c;点击创建项目按钮。 在弹出的对话框内&#xff0c;依…

Unity AssetsBundle打包

为什么要使用AssetsBundle包 减少安装包的大小 默认情况下&#xff0c;unity编译打包是对项目下的Assets文件夹全部内容进行压缩打包 那么按照这个原理&#xff0c;你的Assets文件夹的大小将会影响到你最终打包出的安装包的大小&#xff0c;假如你现在正在制作一个游戏项目&…

xgp加速器免费 微软商店xgp用什么加速器

2001年11月14日深夜&#xff0c;比尔盖茨亲自来到时代广场&#xff0c;在午夜时分将第一台Xbox交给了来自新泽西的20岁年轻人爱德华格拉克曼&#xff0c;后者在回忆中说&#xff1a;“比尔盖茨就是上帝。”性能超越顶级PC的Xbox让他们趋之若鹜。2000年3月10日&#xff0c;微软宣…

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建&#xff0c;执行如下指令&#xff1a; pip install flask # 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run() 核心代码剖析&#xff1a; 从 fla…

R语言 数据的整理与清洗(Factor篇)

《Cookbook for R》 Manipulating Data &#xff5e; Factors Renaming levels of a factor 重命名因子的水平 先创建示例 x <- factor(c("alpha","beta","gamma","alpha","beta")) x #> [1] alpha beta gamma alp…

【JavaEE多线程】深入解析Java并发工具类与应用实践

目录 JUC(java.util.concurrent)的常见类Callable 接口ReentrantLock原子类线程池ExecutorService 和 ExecutorsThreadPoolExecutor信号量 SemaphoreCountDownLatch 集合类多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表 JUC(java.util.concurrent)的常见类 …

JTAG访问xilinx FPGA的IDCODE

之前调试过xilinx的XVC&#xff08;Xilinx virtual cable&#xff09;&#xff0c;突然看到有人搞wifi-JTAG&#xff08;感兴趣可以参考https://github.com/kholia/xvc-esp8266&#xff09;&#xff0c;也挺有趣的。就突然想了解一下JTAG是如何运作的&#xff0c;例如器件识别&…

git强制覆盖本地命令

git强制覆盖本地命令&#xff08;单条执行&#xff09;&#xff1a; git fetch --all && git reset --hard origin/master && git pull 第一个是&#xff1a;拉取所有更新&#xff0c;不同步&#xff1b; 第二个是&#xff1a;本地代码同步线上最新版本(会覆盖…