Gallery is deprecated:Gallery 过期了怎么办?(一)

Android语言基础教程(69)Android高级用户界面设计高级组件之画廊视图:别再让用户左右滑!Android Gallery视图让图片浏览爽到飞起 在Android应用开发中,图片展示始终是一个绕不开的话题。无论是电商应用的商品展示,还是社交媒体的图片流,优雅的图片浏览体验总能提升用户满意度。而Gallery组件,正是Android早期提供的一个强大且独特的水平滚动图片浏览工具。 阅读详情

前段时间就发现Gallery这个控件被无情的打上了过期这个烙印。当时很好奇,谷歌为什么就让它过期了,不过那个时候项目忙就没有仔细去看了,反正过期了还能用,只是不维护了嘛。今天刚好有点时间就翻了翻android SDK文档:

This class was deprecated in API level 16.
This widget is no longer supported. Other horizontally scrolling widgets include HorizontalScrollView and ViewPager from the support library.

啊哦,在API level 16(Android 4.1)就过期了,也就是谷歌不在维护这个类了。谷歌还推荐了可以用HorizontalScrollView 或者ViewPager 来代替它。

首先,先给Gallery默哀一分钟吧,过期了,离死也就不远了。这期,我们先谈谈Gallery为什么会被谷歌判了死刑吧。

网上查了一圈,最后只在stackoverflow找到了一个类似的问题和一个疑似答案的答案,附上问题链接:

        http://stackoverflow.com/questions/11868503/the-type-gallery-is-deprecated-whats-the-best-alternative


简明说下大意:

问:很奇怪这个控件已经过期。
这个控件过期了,HorizontalScrollView 或者ViewPager该换用哪个?

答:我想HorizontalScrollView这个控件最符合你的要求。

我怀疑Gallery过期的原因是因为它的适配器不能合适的转换视图,它每次切换图片时都要新建视图造成浪费太多的资源。

另外你可以选择使用The third part created ecogallery,它克服了gallery不能回收视图的缺点;但不幸的是,通过网络只在pastebin上找到它的有关资料。(这句话无视吧,那个链接访问不了)

通过这段对话,可以推测出gallery的生理缺陷:它每次切换图片时都要新建视图造成浪费太多的资源。很有可能是因为这个原因被谷歌封杀的。对话中还提到了使用第三方gallery控件来解决这个问题。鉴于很多人还在使用gallery,我就把这个ecogallery这个项目地址也贴出来,供大家优化gallery使用。

EcoGallery
Replacement for Gallery widget in Android with View recycling. This originally made by Joseph Earl (details).

Usage:

1- Include 'EcoGallery' android library to your project. (Eclipse project: properties -> Android -> Library - Add)

2- You could declare EcoGallery in the layout xml file, Example:

<us.feras.ecogallery.EcoGallery
android:id="@+id/images"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
/>
3- Use EcoGalleryAdapterView instead of AdapterView.

For a complete tutorial check the wiki.

Sample App

Click here to view the sample app

Change Log:

June 24, 2013

Compiler warnings fixed @mnowrot
Limitation:

The existing implementation assumed that each different position in the adapter resulted in a unique view. The changes are only good if your Gallery contains only one type of item, if not you'll need to add some sort of key based on item type and the amount of that type required.


EcoGallery项目github地址:https://github.com/falnatsheh/EcoGallery/

Gallery is deprecated:Gallery 过期了怎么办?(一)先讲这些了,接下来(二)(三)会详细讲该选用哪个控件来代替gallery和具体的代码。



Android 实现图片轮播的三种方法 光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想。 阅读详情

相关推荐

Android ImageView高级实战:从相框堆叠到交互游戏开发

在Android应用开发中,ImageView作为核心UI控件,不仅是静态图片的容器,更是实现动态交互和复杂视觉效果的基础。其scaleType、alpha等属性控制着图片的显示方式,而FrameLayout、ViewPager2等现代布局容器则决定了视图的层级与交互逻辑。理解视图堆叠(Z-order)原理和适配器模式,能够高效管理大量图片资源,构建流畅的相册浏览体验。通过事件监听与图形属性动态控制,开发者可以将简单的图片展示升级为丰富的交互应用,例如实现图片切换动画或构建完整的猜牌小游戏。这些技术广泛应用

weixin_30634661的博客 374

【webUI】gradio基础使用2——Gallery组件显示多张图片

基于python的在浏览器显示多图片显示,本文基于gradio写出最简单形式方便大家修改。后续应用:例如上传一张图片,经过处理,输出查询结果。

进一寸有一寸的欢喜 1万+

VS Code插件发布全流程:从vsce打包到Marketplace上架避坑指南

VS Code插件是扩展编辑器功能的核心技术载体,其发布本质是将本地开发产物标准化为 Marketplace 可索引、可安装、可验证的交付单元。原理上依赖 vsce 工具链完成元数据校验、依赖打包、数字签名与 API 提交,技术价值在于打通开发者能力与全球用户触达的最后通路。典型应用场景包括前端工具封装、团队内部效率组件外溢、以及开源项目生态集成。过程中 Publisher 创建、package.json 字段合规性、TypeScript 编译路径配置(如 main 指向 out/extension.js)

weixin_34375251的博客 442

DeepSeek-Coder-V2:开源代码模型的终极突破指南

还在为代码生成任务发愁吗?想找一个既强大又实惠的AI编程助手?今天就来聊聊DeepSeek-Coder-V2——这个在GitHub上迅速蹿红的开源代码智能模型,看看它如何打破闭源模型的垄断,成为开发者们的新宠。 ## 项目亮点速览 **DeepSeek-Coder-V2**可不是普通的代码模型,它是基于混合专家架构打造的重量级选手,拥有2360亿参数却只激活210亿参数,这种设计让它既强大又高

gitblog_01147的博客 1221

Alteryx实战指南:从桌面工具到生产级数据流水线

Alteryx作为企业级数据准备与自动化分析平台,其核心价值远超可视化拖拽——本质是构建可复用、可审计、可协作的数据流水线。它基于In-DB加速、动态宏(Dynamic Macro)和批处理(Batch Processing)等机制,实现跨源数据接入、语义化清洗、时区归一、特征固化与CI/CD集成。技术价值在于将个人工作流升级为团队级数据资产,支撑金融风控、电商分群、IoT日志分析等高并发、强合规、低延迟场景。本文聚焦真实项目中80%被忽略的隐性知识:连接池配置、Action Tool动态注入、Error

weixin_33704591的博客 456

Eplan P8 API二次开发--插入符号(Symbol)功能(Function)并定义属性

1、目的 使用Eplan API在页中自动插入某个符号并按约定规则自动设置好属性 2. 步骤 一、基础信息 比如要在Eplan中自动插入一个电机的符号并定制属性,我们先要确定要插入的符号名,可以在Eplan中获取如下符号(Symbol)信息 可以知道我们待插入的符号名称为M3_1, 接下来,使用Visual Studio建立类库项目,并引用Eplan Api库 二、获取符号变量(SymbolVariant) 在Eplan中,当一个符号(Symbol)被插入到页中,这个符号的引用即变为一个(Function

如是道程序人生 4532

Android高级控件系列五之Gallery的使用(已过时)

一、前言: 首先要说的是,这个控件其实是已经过时了的,如果大家对过时的用起来不舒服或者不美观的话,在我的下一篇博客中会给大家带来另一种ViewPager控件的体验,不过Gallery控件在页面展示上的效果的是不如ViewPager的,比如说,在图片的衔接上,Gallery是属于那种拖泥带水的,而ViewPager是干净利落的,因此这也是我为什么说Gallery为什么在某些效果方面不如ViewPa

Apollo 6512

基于FastLIO2与TEB算法的机器狗自主导航系统实战

本文详细介绍了如何为机器狗构建一套基于FastLIO2与TEB算法的自主导航系统。通过整合FastLIO2激光惯性里程计实现精准定位,并采用TEB局部规划器进行灵活路径规划与动态避障,解决了传统方案在复杂地形下反应慢、易碰撞的问题。文章提供了从环境搭建、算法部署、地图转换到系统调试的完整实战指南,帮助开发者实现机器狗的稳健自主行走。

beer8的博客 324

git 学习之:当 github 的秘钥失效了怎么办,一直没有办法进行clone 和 push;解决办法:添加新的 SSH keys

https://blog.csdn.net/weixin_44394753/article/details/91410463 主要操作步骤 打开 github -> settings -> sshkeys and GPGkeys 在计算机中打开 git bash 输入 ssh-keygen -t rsa -C “xxxx@xxxx.com” (你的邮箱地址) cat ~/.ssh/id_rsa.pub 复制产生的 ssh keys,并粘贴到 github 对应页面位置中,详情参照上面的博客

qq_42902997的博客 1248

CMOS sensor 基础

NA

m0_72053187的博客 1661

手把手教你YOLOv8/YOLOv11分割训练自己数据集和推理,并教你使用Labelme工具标注数据(附分割网络结构图)

YOLOv8-seg 和 YOLOv11-seg 都是一种高效实例分割算法,实例分割模型的输出是一组勾勒出图像中每个物体的遮罩或轮廓,以及每个物体的类标签和置信度分数。当你不仅需要知道物体在图像中的位置,还需要知道它们的具体形状时,实例分割就非常有用了,功能非常强大,可以应对各种视觉任务。 YOLOv11-seg 则在 YOLOv8-seg 基础上进一步魔改了模型架构,相对分割速度可能更快,其他指标性能有待测试。实例分割可以用于自动驾驶、医疗图像处理、智能农业监控等领域。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4476

Gallery is deprecated

在学习Gallery控件时,IDE提示已经过期,这是怎么回事呢?又开始搜索大法,说句题外话,百度真心残废,在google上找到这样的一个和我有同样疑问的页面:http://stackoverflow.com/questions/11868503/the-type-gallery-is-deprecated-whats-the-best-alternative         简单翻译一下,英文不

heeye的专栏 680

Django框架中settings文件的部署建议

为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。然后,通过在启动应用程序时指定不同的settings文件,来加载相应的配置。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。可以使用Python的。为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。

WELL_CODER的博客 129

安卓学习第17课——Gallery

虽然Gallery已经过时了,但是既然书上讲了,我还要学习一下。。产生的效果很好。。。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_...

aozhe0658的博客 105

一文搞定 ST22 短转储 MEMORY_NO_MORE_PAGING:看懂 SAP Paging 机制,参数 rdisp/PG_SHM 与 rdisp/PG_MAXFS 怎么设才稳

SAP系统MEMORY_NO_MORE_PAGING错误通常源于Paging资源耗尽而非物理内存不足。关键排查点包括:通过ST22确认错误类型,ST02监控Paging使用情况,检查工作进程trace中的"no more free blocks"提示。解决方案建议将rdisp/PG_SHM和rdisp/PG_MAXFS设为相同值(如250000块≈2GB),使Paging完全在内存中运行。同时需优化易耗Paging的代码逻辑,如避免滥用EXTRACT命令和超大内存对象传输。典型案例如月末

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 335

Universal Robot——在Gazebo中模拟UR5机器人

今天的目标是在Gazebo安装我们的ur5机器人。Gazebo是一个流行的模拟工具,它不仅可以让你像在Rviz中一样可视化你的机器人,而且还内置了一个物理引擎。这样你就可以在更真实的环境中测试你的机器人应用程序。我们将查看我们需要的属性 添加对我们的机器人——我们的order的描述,以模拟它以及如何在Gazebo中生成我们的机器人。

如果想成为中心,那么就到中心去吧。 1970

Gallery API 16 被替换掉了

Gallery extends AbsSpinner implements GestureDetector.OnGestureListener java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGroup        ↳ android.widget.Adap

muyanfei的专栏 733

PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性能

这篇论文介绍了一种名为PointCNN的方法,旨在从点云(point cloud)数据中学习特征。传统卷积神经网络(CNN)在处理规则网格数据(如图像)时非常有效,但由于点云是无序且不规则的,直接在其上应用卷积操作会导致形状信息丢失,并对点的排列顺序敏感。为了解决这一问题,论文提出了一种X-Conv操作。该方法通过学习一种来重新排列点云中的点并加权输入特征。然后,将典型的卷积操作应用于转换后的特征。这种方法将传统的 CNN 扩展到点云特征学习,并命名为PointCNN。

u012901740的博客 2300

android新组件RecyclerView使用介绍和进阶使用,替用Gallery

RecyclerView是support-v7包中的新组建,是一种强大的

10万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Alfred Workflows 完全攻略:解锁Mac效率新境界

Alfred Workflows 是提升 Mac 使用效率的强大工具集,通过自动化操作和快捷命令帮助用户简化日常任务。本项目(GitHub 加速计划 / alfr / alfred-workflows)曾是多个实用 Alfred 工作流的集合地,虽然当前仓库已**deprecated**,但其历史资源和迁移指南对 Alfred 用户仍具有重要参考价值。 ## 🌟 为什么选择 Alfred Wo

gitblog_00758的博客 926

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

elementUI使用scss自定义主题编译时Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

解决办法 使用通过scss自定义elementUI的主题时,若sass版本不对,编译时会警告虽然不影响正常编译,但是很影响心情,我们只需要在package.json文件里修改"sass": "~1.32.6"即可 使用scss文件修改elementUI自定义主题方法 Element 的 theme-chalk 使用 SCSS 编写,如果你的项目也使用了 SCSS,那么可以直接在项目中改变 Element 的样式变量。新建一个样式文件,例如 element-variables.scss,写入以下内容: /*

weixin_52369659的博客 1万+

WINCC7.3破解文件

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

Compose-router vs Navigation Compose:单Activity导航的5大核心差异与Appyx迁移指南

compose-router 是一个面向 Jetpack Compose 的**单 Activity 导航路由库**,用 Compose 组合(而非 XML 导航图)映射整个 App 结构,并自带多级后向栈(back stack)、返回键处理和作用域状态持久化。它的官方继承者 Appyx 如今已是该领域的正统方案,因此本文将它和 Google 官方的 Navigation Compose 逐一拆解

gitblog_00480的博客 930

掌握basic-ftp目录操作:ensureDir与uploadFromDir的高效用法

basic-ftp是一款专为Node.js打造的FTP客户端,支持FTPS加密传输、IPv6被动模式、async/await语法及TypeScript类型定义。本文将深入解析两个核心目录操作API——**ensureDir**与**uploadFromDir**的使用技巧,帮助开发者轻松实现目录创建与批量文件上传功能。 ## 📂 ensureDir:自动创建多层级目录的终极方案 ### 🌟

gitblog_00630的博客 432

ios相机读取图片到相册writeImageToSavesPhotosAlbum出现的问题

读取相机选择的照片 MImaLibTool *imgLibTool = [MImaLibTool shareMImaLibTool]; [imgLibTool.lib writeImageToSavedPhotosAlbum:[theImage CGImage] orientation:(ALAssetOrientation)[theImage imageOrientation] ...

howl_MK的博客 2833
上一篇: Android软键盘(输入法)使用大杂烩:避免进入页面EditText自动弹出软键盘-2013.11.08更新
下一篇: Caused by: java.lang.AssertionError: illegal type variable reference 解决办法
极客公园
博客等级 码龄15年 45粉丝 38原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值