Android4.0图库Gallery2代码分析(一) 程序整体结构
Android4.0图库Gallery2代码分析(一) 程序整体结构
Gallery2的用例图分析:Gallery2主要功能是实现本地存储器、MTP存储器和网络存储器中媒体(图像和视频)的浏览、显示和很多其它操作(删除、分享、选择和缩放等)。以下用一张简单的用例图描写叙述了Gallery2的功能和职责。

Gallery2中主要界面:AlbumSetPage.java(相冊缩略图); AlbumPage.java(单个相冊照片缩略图); PhotoPage.java(单张照片); ManageCachePage.java(缓存管理)SlideShowPage.java(单张滑屏界面); 这些界面类父类为ActivityState.java;这些界面的切换由StateManager.java负责。
界面类中一般都会制定一个数据源,Gallery2中基本的数据源有ComboSource.java(组合源); MtpSource.java(Mtp源); PicasaSource.java(Picasa源); LocalSource.java(本地源); ClusterSource.java(簇源); UriSource.java(URL源);FilterSource.java(过滤源)。数据源的共同基类为:MediaSource。数据源由DataManager.java负责管理。界面类就是从DataManager中取一个合适的数据源初始化自己。另外数据源是由MediaObject聚合而成,MediaObject也有多种形态。
界面和数据源须要一个桥梁,界面才干方便的渲染数据源,桥梁就是数据适配器。比如:AlbumSetPage(界面缩略图界面)---- AlbumSetDataAdapter(适配器)---- ComboSource(组合数据源)。AlbumPage ----AlbumDataAdapter;PhotoPage ----PhotoDataAdapter;SlideshowPage ----SlideshowDataAdapter
数据渲染的最小单元为MediaOject,它包含丰富的衍生类。

界面交互方面就是触摸屏操作和菜单操作。怎样支持鼠标呢,假设系统支持鼠标,它就自然支持。怎样支持遥控器呢?见兴许文章。
兴许文章大致文件夹
图库Gallery3D(Gallery2)分析(二) 程序资源管理和传递
图库Gallery3D(Gallery2)分析(三) 状态管理和窗体切换
图库Gallery3D(Gallery2)分析(四) 消息处理(点击和手势)
图库Gallery3D(Gallery2)分析(五) 各种数据源和数据源的管理
图库Gallery3D(Gallery2)分析(六) 可渲染数据元及其多样性
图库Gallery3D(Gallery2)分析(七) 遥控器控制的实现
图库Gallery3D(Gallery2)分析(八) 和数据扫描线程的数据交互
图库Gallery3D(Gallery2)分析(九) 几点可优化的地方
Android4.0图库Gallery2代码分析(一) 程序整体结构的更多相关文章
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- android4.0 的图库Gallery2代码分析(一)
最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...
- android4.0 的图库Gallery2代码分析(四) 之相册的数据处理以及显示
最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...
- android4.0 的图库Gallery2代码分析(三) 之Applition的初始化准备
Applition的初始化准备 图库的一切动作都明显地起源于Application.这是区别与其他那种感觉不到Application存在,仅仅感觉到Activity存在的简单应用的一个特点. 图库的a ...
- android4.0 的图库Gallery2代码分析(二)
最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...
- Android5.1图库Gallery2代码分析数据加载流程
图片数据加载流程. Gallery---->GalleryActivity------>AlbumSetPage------->AlbumPage--------->Photo ...
- Android4.0 Launcher 源码分析1——Launcher整体结构
1.Launcher整体结构 桌面程序其实并不包含桌面壁纸,桌面壁纸其实是由 WallpaperManagerService来提供,整个桌面其实是叠加在整个桌面壁纸上的另外一个层. 1.1 WorkS ...
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- C#代码分析--阅读程序,回答问题
阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...
随机推荐
- netty epoll调用示例
1.服务器端 import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.PooledByteBufAllocator; imp ...
- 【BZOJ 3238】[Ahoi2013]差异
[链接]h在这里写链接 [题意] 还有更简洁的题目描述吗/xk [题解] 对于lenti+lentj这一部分,比较好处理. 可以弄一个前缀和. 然后O(N)扫描一遍. ...
- js进阶课程 12-9 jquery的事件对象event的方法有哪些?
js进阶课程 12-9 jquery的事件对象event的方法有哪些? 一.总结 一句话总结:三组六个,阻止默认事件一组,阻止冒泡一组,阻止冒泡和剩余事件一组. 1.事件的默认动作指什么? 比如点a标 ...
- JScript使用正则表达式的经验
作者:朱金灿 来源:http://blog.csdn.net/clever101 在JScript使用正则表达式时有不少元字符在试图对其进行匹配时需要进行特殊的处理.要匹配这些特殊字符,必须首先将这些 ...
- MySQL数据导出导入任务脚本
#!/usr/bin/env python#-*- encoding: utf8 -*- import timeimport osimport mysql.connector #定义一些全局变量 w ...
- 【Redis学习】:Windows环境下的Redis安装与配置
Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C ...
- 【跟我一起学Unity3D】代码中分割图片而且载入帧序列动画
在Cocos2dx中.对大图的处理已经封装好了一套自己的API,可是在Unity3D中貌似没有类似的API(好吧,实际上是有的,并且功能更强大),或者说我没找到. 只是这也在情理之中,毕竟Unity3 ...
- Nginx+ 多个Memcached+ 多个Tomcat集群配置来实现 sticky Session
假如有 大于2 台的Tomcat servers,如何实现sticky session特点的高可靠web 服务? 方案设计: 前端使用nginx(最好是淘宝的 tengine)作为we 流量分发器,向 ...
- 益智小游戏(app)
最好的益智类游戏要基于一定的数学原理. 一笔完成:(拓扑学,哥尼斯堡问题) 哥尼斯堡七桥问题
- Windows Phone 8.1 后台任务
Windows Phone 8.1 应用可以添加多个后台任务,以辅助应用完成某些任务. (1)新建前台应用 后台任务是依托于前台应用的,所以必须拥有一个前台应用. 该前台应用的功能很简单,就是读取文件 ...