ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

横竖屏旋转图片不丢失:ImageGallery 配置变更处理与状态恢复技巧

横竖屏旋转图片不丢失:ImageGallery 配置变更处理与状态恢复技巧 横竖屏旋转图片不丢失ImageGallery 配置变更处理与状态恢复技巧【免费下载链接】ImageGalleryA gallery used to host an array of images项目地址: https://gitcode.com/gh_mirrors/im/ImageGalleryImageGallery 是一款轻量级的 Android 图片画廊库支持网格列表、全屏浏览、Palette 动态背景色与双指缩放。很多新手集成后发现手机一横屏图片列表竟然清空了 本文带你吃透 ImageGallery 的配置变更处理与状态恢复机制掌握横竖屏旋转后图片不丢失的 3 个实用技巧。为什么旋转屏幕会让图片画廊丢图先搞懂原理才能对症下药默认行为屏幕方向改变时Android 会销毁并重建 Activity。如果图片数据只存在内存字段里重建后就凭空消失。ImageGallery 的解法图片数据全部通过Bundleextras / arguments传递由系统自动恢复页面重建后依然能取回完整列表。进阶解法通过configChanges让系统根本不重建页面只回调onConfigurationChanged()做局部刷新。⚠️ 记住一个原则数据放 Bundle别只放内存字段这是横竖屏状态恢复的基石。技巧一configChanges 声明一行配置告别页面重建在清单文件中为画廊页面声明android:configChangesorientation|keyboardHidden|screenSize效果旋转屏幕时 Activity 不再销毁重建系统改为回调onConfigurationChanged()图片自然原地保留过渡也更丝滑。示例工程的声明可以参考 sample/src/main/AndroidManifest.xml 中的ImageGalleryActivity与HostImageGalleryActivity配置。技巧二onConfigurationChanged 动态调整网格列数不重建页面后布局需要自己适配。ImageGallery 的处理非常优雅方向判断交给DisplayUtility.isInLandscapeMode()内部读取Configuration.ORIENTATION_LANDSCAPE实现见library/src/main/java/com/etiennelawlor/imagegallery/library/utilities/DisplayUtility.java在onConfigurationChanged()中重新调用setUpRecyclerView()横屏 4 列、竖屏 3 列自动铺满新屏幕核心逻辑就在两个文件的同名回调方法中独立 Activity 版library/src/main/java/com/etiennelawlor/imagegallery/library/activities/ImageGalleryActivity.javaFragment 版library/src/main/java/com/etiennelawlor/imagegallery/library/ImageGalleryFragment.java这样旋转后网格会瞬间重排而不是等待整页重建。技巧三Fragment 复用 Bundle 传参旋转后精准还原如果你的 App 把画廊嵌入自己的页面Fragment 模式library/src/main/java/com/etiennelawlor/imagegallery/library/ImageGalleryFragment.java的工厂方法会用setArguments(extras)把图片列表和标题存进 argumentsonCreate时再从中取回——即使系统强制重建参数也不会丢。宿主页面则用先查后建的经典恢复模式示例见sample/src/main/java/com/etiennelawlor/imagegallery/activities/HostImageGalleryActivity.java用findFragmentById()检查 Fragment 是否已存在已存在 → 只attach不重新创建状态原样保留不存在 → 用getIntent().getExtras()新建 Fragment。至于全屏浏览页FullScreenImageGalleryActivitylibrary/src/main/java/com/etiennelawlor/imagegallery/library/activities/FullScreenImageGalleryActivity.java它同样把图片列表和当前页码 position放进 extras旋转后还能精准回到你正在看的那一张标题栏的9/30页码指示也不会错乱。关键源码文件速查表功能模块文件路径网格画廊页独立 Activitylibrary/src/main/java/com/etiennelawlor/imagegallery/library/activities/ImageGalleryActivity.java网格画廊页Fragment 版library/src/main/java/com/etiennelawlor/imagegallery/library/ImageGalleryFragment.java全屏浏览页library/src/main/java/com/etiennelawlor/imagegallery/library/activities/FullScreenImageGalleryActivity.java横竖屏判断工具library/src/main/java/com/etiennelawlor/imagegallery/library/utilities/DisplayUtility.java网格适配器library/src/main/java/com/etiennelawlor/imagegallery/library/adapters/ImageGalleryAdapter.java全屏页清单配置示例sample/src/main/AndroidManifest.xml横竖屏不丢图检查清单 ✅页面声明configChangesorientation|keyboardHidden|screenSize避免无谓重建图片数据与标题通过 Bundle extras / arguments 传递不依赖内存字段重写onConfigurationChanged()按横竖屏刷新网格列数横 4 竖 3Fragment 宿主采用findFragmentById()attach模式杜绝重复创建全屏页传入 position 参数保证旋转后回到原页小结ImageGallery 的横竖屏图片不丢失并非魔法而是三件套的组合拳——Bundle 传参兜底 configChanges 免重建 onConfigurationChanged 精细刷新。掌握这套配置变更处理与状态恢复思路你的任何图片画廊页面都能稳过旋转测试。【免费下载链接】ImageGalleryA gallery used to host an array of images项目地址: https://gitcode.com/gh_mirrors/im/ImageGallery创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表