引言

上一篇文章已经讲解了数据加载过程,接下来我们来看一看数据加载后的处理过程。按照正常的思维逻辑,当数据加载之后,接下来就应该考虑数据的显示逻辑。

MVC显示逻辑

大家可能对J2EE的MVC架构比较熟悉,Gallery2和MVC有什么关系呢,简直是瞎扯???首先,我们先回忆一下软件设计思想以及设计原则(具体请参考http://blog.csdn.net/cdl2008sky/article/details/6364396),简单的概括就是 紧内聚、松耦合、分层。最后再来解释一下MVC思想,MVC的思想就是显示层(View)逻辑和控制层(Control)逻辑进行分离。回顾了以上的知识点,我们再来看看Gallery2的设计是否符合MVC的设计思想。在阐述复杂行为时,图表往往比语言更具有说服力,因此还有用图表来证明我的观点。具体请参考图1-1所示:

图1-1

上图将Gallery的主要逻辑的类关系图简单的表现出来,从图中我们可以明显的看出Gallery的设计采用了MVC分层的设计思想。接下来的时间我们就顺藤摸瓜,一层一层分析Gallery的实现方式。

当用户进入图库后,首先看到的是AlbumSetPage(相册集)处理的数据信息;当用户点击具体的一个相册时,会显示AlbumPage(照片集)处理的数据信息;当用户点击具体的一张图片时,会显示PhotoPage处理的数据信息。图库的主要流程就是图片浏览、图片编辑和应用交互功能(备注:图片编辑和应用交互在后续文章中分析)。图表是最好的表达方式,我们来看一下图片浏览过程的流程图,具体如图:1-2所示:

图1-2

从上图中我们可以看到Gallery图库图片浏览的整体调用流程,至于图片编辑和应用交互功能的逻辑结构相对比较简单,在此就不做过多的阐述,感兴趣的同学可以自行研究。大家如果对图库有什么问题,可以在博客的评论中提出来,一起探讨,共同进步。

Android源码之Gallery专题研究(2)的更多相关文章

  1. Android源码之Gallery专题研究(1)

    前言 时光飞逝,从事Android系统开发已经两年了,总想写点什么来安慰自己.思考了很久总是无法下笔,觉得没什么好写的.现在终于决定写一些符合大多数人需求的东西,想必使用过Android手机的人们一定 ...

  2. Android底层有一定的认识,研究过相关的Android源码

    一.系统架构: 一).系统分层:(由下向上)[如图] 1.安卓系统分为四层,分别是Linux内核层.Libraries层.FrameWork层,以及Applications层: 其中Linux内核层包 ...

  3. android源码地址及下载介绍

      git clone https://android.googlesource.com/device/common.git  git clone https://android.googlesour ...

  4. Eclipse与Android源码中ProGuard工具的使用

    由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...

  5. android源码的目录结构

    android源码的目录结构 [以下网络摘抄] |-- Makefile ! l/ a5 n% S% @- `0 d# z# a$ P4 V3 o7 R|-- bionic              ...

  6. Android源码-学习随笔

    在线代码网站1:http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/ 书籍: ...

  7. Android拓展系列(11)--打造Windows下便携的Android源码阅读环境

    因为EXT和NTFS格式的差异,我一直对于windows下阅读Android源码感到不满. 前几天,想把最新的android5.0的源码下下来研究一下,而平时日常使用的又是windows环境,于是专门 ...

  8. [安卓]windows下如何安装Android源码

    本文改写于:http://www.cnblogs.com/skyme/archive/2011/05/14/2046040.html 1.下载并安装git: 在git-scm.com上下载并安装git ...

  9. Android源码分析-全面理解Context

    前言 Context在android中的作用不言而喻,当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context,而这个Context到底是什么呢,这个问题好像很好回答又好像 ...

随机推荐

  1. a/b + c/d

    a/b + c/d Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  2. shell编程之服务脚本编写,文件锁以及信号捕获

    shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...

  3. -Swift.h not find

    亲测成功. 随便新建一个swift文件,xcode问是否生成xxx-Bridging-Header.h文件,点YES.再编译,问题解决. By default, the generated heade ...

  4. unity3d自带帮助文档的打开方法

    1废话不提,直接上图: 2.在弹出来的浏览器窗口中点击: 3.在点击后的网页中即可以搜索了,在断网的情况下,作为资料查询还是蛮不错的.

  5. .net ToString()用法详解与格式说明

    我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34 如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢? 这里将要用到:Da ...

  6. apicloud本地测试安卓测试包安装

    1.liutingdeMacBook-Pro:~ js-lt$ which adb 2.liutingdeMacBook-Pro:~ js-lt$ ls 3.liutingdeMacBook-Pro: ...

  7. 【转】从1到N这N个数中1的出现了多少次?

    给定一个十进制整数N,求出从1到N的所有整数中出现"1"的个数. 例如:N=2,1,2出现了1个"1". N=12,1,2,3,4,5,6,7,8,9,10,1 ...

  8. jquery 简单的栏目切换

    <style> ul{ list-style:none; padding:0px; margin:0px;} #nav_box{ width:502px; height:402px; ov ...

  9. eclipse修改豆沙绿

    长时间的使用eclipse开发会很累吧  设置一个保护眼睛的豆沙绿色 不刺眼 是不是会更好一些呢 那么如何设置呢现在就教大家   工具/原料 eclipse jdk 方法/步骤 1 首先打开eclip ...

  10. js表单提交,判断文本框,用户名密码是否为空,JS表单检测!

    当表单提交时先触发验证的js代码,当验证表单的方法返回true时才会提交表单返回false则不提交数据<script type="text/javascript">fu ...