修改android4.4图库系列四(五)——android4.4.2图库整体架构分析

到今天为止,修改了一个多月的android图库源码结束了!修改的具体内容就是将图库中原有的ActionBar干掉,然后自定义ActionBar。为了达到效果,自定义ActionBar的所有事件还必须与原有的ActionBar上的点击事件绑定。为此,必须要分析图库的整体架构、各个界面之间的转化关系,以及大部分类的作用。

修改后的效果图如下:

首先,不得不说,图库源码真的很强大,光本地的java代码就有500多个类,还有很多JNI代码。能从中学到很多的东西。

一、界面之间的转换

主要界面就三个:一个相册集的显示界面、一个相册的显示界面、一个图片或视频的显示界面。转换图如下(此图可在com.android.gallery3d.app.AlbumPage.java中找到):

1、相册集对应类:AlbumSetPage.java。

2、相册对应类:AlbumPage.java。

3、图片对应类:PhotoPage.java。

4、所有ActionBar由类GalleryActionBar.java管理。

5、所有菜单事件由MenuExecutor.java管理。

6、图片修剪类:FilterShowActivity.java。

7、视频修剪类:TrimVideo.java。

二、事件分析

主要事件就是图片、视频的显示以及ActionBar上的控件事件。

利用hierarchyviewer工具,同时打断点,DDMS调试,很容易找到各个事件的源码。此处就不分析了。有兴趣的可以自己去调试。

时间: 2024-07-30 22:20:20

修改android4.4图库系列四(五)——android4.4.2图库整体架构分析的相关文章

自动化运维Saltstack系列(五)之中型Web网站架构设计

架构图

android4.0 USB Camera实例(五补充)jpg压缩

前一篇最后 我们说了一个直接将yuv转成jpg的函数 但是转换没有成功 原函数是yuv420转jpg的 研究了下发现 yuv420隔行扫描的的序列是这样的 YYYY YYYY UVUV 而yuv422的隔行扫描的序列是这样的 YU YV YU YV YU YV 所以将函数作如下修改 static int put_jpeg_yuv420p_memory(unsigned char *dest_image, unsigned char *input_image, int width, int hei

android4.0 USB Camera实例(五)jpg压缩

最近大部分时间都在研究usb 摄像头顺便把jpg编码也写上 下面大部分函数都是我在网上找的 然后稍微的改一点就可以使用了 不过找这些函数费了不少时间 jpg编码网上有很多说明 大致流程都是一样的 我也没深入研究这里就不说了 接前面几篇Camera的文章 这里主要同把获取到的yuv数据通过jpg压缩 以及压缩成mjpeg视频流 首先说明下摄像头获取到的数据格式是yuv422(p16) 这个是在你初始化摄像头设置pixelformat我们当初设置的是V4L2_PIX_FMT_YUYV它的实际格式就是

天津出差系列(五)----第五天

===================2014-08-20 九点到疗养院 早上七点多江科强打电话说检验科四台条码机,今早上一台打印不出来条码了. 然后我就起床了.准备出门的时候,内勤打电话说让我去一下.等我去内勤后,内勤人员说两个不同单位有同名同姓人员, 其中一个人的信息跑到另个一单位,造成打印出来的导检单和实际查体人信息不符.具体原因需要查明.经过询问得知,单位导入时身份证号码可能错误,而前台通过姓名查询时出来两个人, 他们进去把相应信息改了一下造成的(初步怀疑是这个原因).内勤希望在"套餐管

C#微信公众号开发系列教程五(接收事件推送与消息排重)

微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C#微信公众号开发系列教程四(接收普通消息) C#微信公众号开发系列教程五(接收事件推送与消息排重) 在上一篇的博文中讲到,微信的消息可以大体分为两种类型,一种是包括:文本,语音,图片等的普通消息,另一种就是本篇要将的事件类型.包括:关注/取消关注事件,扫描带参数二维码事件,上报地理位置事件,自定义菜

跟老杨学java系列(五) JDK的安装与配置

跟老杨学java系列(五) JDK的安装与配置 提示:本节内容对于java入门是非常关键的,对于刚接触java的同学一定要认真学习,欢迎大家留言探讨技术问题.其他问题概不回复. (书接上回)上节课程我们简单介绍了java项目的开发过程及常用的开发工具,这节课我们详细讲解一下JDK的安装与配置.根据上一节的学习,我们知道编写完java代码后,需要先对java代码进行编译,然后再执行.而java程序的编译与执行都是通过JDK来完成的.所以做java开发,首先我们需要学会安装和配置JDK.下面我们就来

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #

ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

原文:ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射 本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义,这个对象是用来将我们的数据持久化到数据库,一般来说,持久化对象中的字段会与数据库中对应的 table 保持一致. 2.视图对象VO(View Object):视图对象 V

Linux 服务器 Java环境部署系列(五):搭建RabbitMQ

引言 本文主要介绍Linux服务器下,搭建RabbitMQ,及相关配置. 系列文档目录 Linux 服务器 Java环境部署系列(一):安装JDK Linux 服务器 Java环境部署系列(二):安装nginx.mysql.tomcat.redis Linux 服务器 Java环境部署系列(三):安装git.maven Linux 服务器 Java环境部署系列(四):搭建jenkins环境.部署项目 Linux 服务器 Java环境部署系列(五):搭建RabbitMQ 准备工作 下载Erlang