computeVisibleRange算法分析:
第1步,计算出left,right,bottom,top
第2步,计算出numSlots,并除于2赋值给index
第3步,由index得position,判断position是否在第1步计算出的范围内,是的话,就把第2步计算得出的中间的index赋值给 firstVisibleSlotIndex,lastVisibleSlotIndex,否则,根据滑动窗口算法改变index直到求组所需index
第4步,在while循环中,用第3步得到的firstVisibleSlotIndex求出position,进行和第2步相反的判断,即 position若不在可视范围内,则将相应的index给firstVisibleSlotIndex,否则减 firstVisibleSlotIndex,直到找到最小的可视范围内的index作为firstVisibleSlotIndex。
第5步,在while循环中,用第3步得到的lastVisibleSlotIndex求出position,进行和第2步相反的判断,即 position若不在可视范围内,则将相应的index给lastVisibleSlotIndex,否则增 lastVisibleSlotIndex,直到找到可视范围内的最大的index作为lastVisibleSlotIndex。
第6步,进行firstVisibleSlotIndex,lastVisibleSlotIndex的越界判断。 outBufferedVisibleRange对应的是可见的。outBufferedVisibleRange对应的是0~文件夹的最大数。
computeVisibleItems算法分析:
第1步 由slot计算出position,set,当前set不为空且slot在有效范围,创建bestItems,计算sortedIntersection
第2步 计算这个slotindex中的图片数目,取这个文件中的前12张图片加到bestItems.
第3步 取bestItems里的图片对应的displayList中的displayItem,并赋值给displayItems数组,同时保存 position,及j,j是bestItems数组中一项,范围是0~12。
第四步 对于每一个文件夹,要在displayItems里有对应的12项,当文件夹内图片不足12时,余下的用null填充。
当绘制缩略图界面时,有些不同
在第1步中,slotindex不再表示文件夹,这时表示具体某一张图片了,所以由slot得到的set里始终只有1项,且会调 ArrayUtils.computeSortedIntersection(visibleItems, items, MAX_ITEMS_PER_SLOT, bestItems, sTempHash);给bestItems赋值,这样第2步就在bestItems加项动作不执行。
分享到:
相关推荐
Gallery3D是一款强大的3D图像展示框架,常用于创建具有视觉冲击力的图像画廊或主界面。在本文中,我们将深入探讨如何利用Gallery3D实现一个完全自定义的XML布局,以及如何在子Item中添加动态的、精确的电子钟效果。 ...
《Android Gallery3D最新源码解析》 Gallery3D是Android平台上的一款开源3D图片浏览应用,它以其高效、流畅的用户体验和强大的3D渲染能力而受到开发者和用户的喜爱。本文将深入探讨Gallery3D的最新源码,揭示其背后...
Gallery3D的用户界面设计简洁易用,符合Android的设计规范。其操作逻辑直观,无论是旋转、放大、缩小还是切换图片,用户都能迅速上手。此外,自定义主题和设置选项允许用户根据个人喜好调整应用的外观和行为。 ### ...
Gallery3D的用户界面设计考虑了触摸操作的便捷性和直观性。`ui`模块包含了大量的视图组件和动画效果实现,如平滑的滚动过渡、缩放等手势识别。这些交互细节使得应用更具吸引力,同时也对开发者如何在Android上实现高...
在Android开发中,`Gallery3D`是一种常见的用户界面组件,它为用户提供了独特的3D视觉体验,使应用的展示更加生动和吸引人。本示例将详细介绍如何自定义`Gallery`来实现3D滑动效果,并提供可以直接使用的`Demo`代码...
Gallery3D的用户界面简洁而直观,这在源代码中体现为对Android UI组件的使用,如ImageView、Adapter等,以及自定义View的实现,以满足3D效果的需求。 ### 9. **国际化与适配** 作为一款面向全球用户的应用,Gallery...
其次,重写gallery的一些方法以实现Y轴上的旋转和Z轴上的缩放,这是3D画廊的核心部分。Android中的Gallery视图是一个可滚动的控件,原本设计用于水平展示项目。为了实现3D效果,我们需要扩展默认的Gallery并覆盖其...
Gallery3D是一款流行的开源图库应用程序,以其高性能和用户友好的界面而受到广大开发者和用户的喜爱。本文将深入探讨Gallery3D的源码,揭示其在图像处理、性能优化以及用户交互设计上的独到之处。 首先,我们要理解...
4. **性能优化**:由于3D渲染可能会消耗大量计算资源,因此在设计Gallery3D时需要考虑性能优化。这可能包括使用GPU加速、延迟加载未显示的图片、图片预加载策略、以及使用高效的图像压缩算法。 5. **用户体验设计**...
Gallery3D的一大特色是它不依赖于Android的UI系统,而是利用OpenGL直接在Activity的同一视图上绘制界面,实现了如主界面、缩略图界面、单张图片查看界面等多场景的无缝切换。这种设计使得Gallery3D能够实现更为流畅...
Gallery3D的用户界面(UI)响应性也是一大亮点。`GridView`的自定义实现,如`QuickScroller`,提供了快速滚动和精确的触摸事件处理。`Scroller`类通过模拟物理滚动效果,使用户在滑动图片时感受到平滑自然的动画过渡...
Gallery3D源码分析
通过重写onTouchEvent()方法,根据ACTION_DOWN、ACTION_MOVE和ACTION_UP等事件,计算出滑动的距离和速度,进而改变Gallery的滚动位置。 5. **动画平滑滚动**:为了提供更好的用户体验,可以使用Animation类或者...
在Android平台上,`Gallery`组件曾经是实现3D滚动效果的一种流行方式,它允许用户以横向滑动的方式浏览图片或项目列表,同时提供了一种视觉上的立体感。然而,随着Android版本的更新,`Gallery`组件在API 16...
Gallery3D是一款基于Android平台的3D图像浏览应用,其独特的用户界面和高效的图片处理技术使其在移动开发领域备受关注。本文将深入剖析Gallery3D的核心组件——Layer类及其关联的RenderView,探讨其在图片展示、布局...
Android 2.2中的Gallery3D是一个引人注目的功能,它展示了Android在图形处理和用户界面设计上的强大能力。Gallery3D基于OpenGL ES,提供了丰富的3D视觉效果,使用户可以以独特的方式浏览图片。本文将深入解析其核心...
Gallery3D可能采用了MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)模式,分离业务逻辑、数据模型和界面展示,提高代码的可读性和可维护性。 总结来说,通过对Gallery3D源码的学习,我们可以掌握...
4. **性能优化**:因为3D效果可能导致更高的计算量,所以需要考虑内存管理、图片加载优化(如使用`LruCache`)以及适当的渲染策略。 文件名称`Gallery3DExample`很可能是一个示例项目,包含实现3D`Gallery`效果的源...