引言

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

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. flash Ane

    1.ANE简介 Adobe AIR Native Extension,Adobe AIR的本地扩展,简称ANE.什么叫本地扩展?因为Adobe AIR是跨平台的一个运行时,可以在Windows,Mac ...

  2. C#中的Virtual、Override和new关键词理解

    来源:http://blog.csdn.net/jackiezhw/article/details/2673992 在 C# 中,派生类可以包含与基类方法同名的方法. 基类方法必须定义为 virtua ...

  3. sql中 replace函数

    例用 xxx 替换 abcdefghi 中的字符串 cde. SELECT REPLACE(''abcdefghicde'',''cde'',''xxx'')

  4. 最佳死链接href= "#" VS href= "javascript:void(0);"

    href= "#" 熟悉hash跳转的同学都知道,只是一个hash跳转,跳转到页面的顶部,可以发现地址栏多了一个#,点击返回会返回本页面. href= "javascri ...

  5. OpenGL------显示列表

    我们已经知道,使用OpenGL其实只要调用一系列的OpenGL函数就可以了.然而,这种方式在一些时候可能导致问题.比如某个画面中,使用了数千个多边形来表现一个比较真实的人物,OpenGL为了产生这数千 ...

  6. jquery 左边分类+插件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. fidder 调接口 的 小常识

    fidder   调试接口 进入fidder页面   点击 composer Content-Type: application/x-www-form-urlencoded; charset=UTF- ...

  8. Android Camera(二)

    上次已经写过SurfaceView显示Camera摄像了,代码可以运行,但是里面有问题,这次纠正过来,顺便实现变焦: 代码: public class CameravedioActivity exte ...

  9. 通过intent启动Activity

    android应用程序内部通过Intent来实现Activity间的跳转.也知道通过Intent调用系统程序.但若想在应用程序A内开启应用程序B(前提是A.B均已安装),该如何去实现? 记录下实现过程 ...

  10. 深入理解.net多线程(一)

    多线程开发要理解的几个基本概念:进程.应用程序域.对象上下文 进程:进程是一个操作系统级别的概念,用来描述一组资源和程序运行所必需的内存分配.简单的理解,可以认为进程就是一个运行程序.对于每一个被加载 ...