摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8661317 在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面。由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行行绘制。又由于不占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面又不会导致用户输入得不到及时响应。在本文中,我们就详细分析SurfaceView的实现原理。 在前面Android控件TextView的实现原理分析一文中提到,普... 阅读全文
posted @ 2013-05-21 14:53
知识天地
阅读(489)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8738877Android应用程序主要由两部分内容组成:代码和资源。资源主要就是指那些与UI相关的东西,例如UI布局、字符串和图片等。代码和资源分开可以使得应用程序在运行时根据实际需要来组织UI。这样就可使得应用程序只需要编译一次,就可以支持不同的UI布局。这种特性使得应用程序在运行时可以适应不同的屏幕大小和密度,以及不同的国家和语言等。在本文中,我们就简要介绍Android的资源管理框架,以及制定学习计划。 在软件开发中,说到代码与资源分离,最容易想到的可能就是Web开发了。在W... 阅读全文
posted @ 2013-05-21 14:44
知识天地
阅读(519)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8498908 我们知道,在Android系统中,Activity是以堆栈的形式组织在ActivityManagerService服务中的。与Activity类似,Android系统中的窗口也是以堆栈的形式组织在WindowManagerService服务中的,其中,Z轴位置较低的窗口位于Z轴位置较高的窗口的下面。在本文中,我们就详细分析WindowManagerService服务是如何以堆栈的形式来组织窗口的。 从前面Android应用程序启动过程源代码分析一文可以知道,应用程序进... 阅读全文
posted @ 2013-05-21 14:25
知识天地
阅读(3303)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8526644在Android系统中,输入法窗口是一种特殊类型的窗口,它总是位于需要使用输入法的窗口的上面。也就是说,一旦WindowManagerService服务检测到焦点窗口需要使用输入法,那么它就会调整输入法窗口在窗口堆栈中的位置,使得输入法窗口位于在焦点窗口的上面,这样用户可以通过输入法窗口来录入字母或者文字。本文就将详细分析WindowManagerService服务是如何管理系统中的输入法窗口的。 在Android系统中,除了输入法窗口之外,还有一种窗口称为输入法对话框... 阅读全文
posted @ 2013-05-21 14:23
知识天地
阅读(763)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8550820在Android系统中,壁纸窗口和输入法窗口一样,都是一种特殊类型的窗口,而且它们都是喜欢和一个普通的Activity窗口缠绵在一起。大家可以充分地想象这样的一个3W场景:输入法窗口在上面,壁纸窗口在下面,Activity窗口夹在它们的中间。在前面一篇文章中,我们已经分析过输入法窗口是如何压在Activity窗口上面的了。在这篇文章中,我们就将继续分析壁纸窗口是如何贴在Activity窗口下面的。 一个Activity窗口如果需要显示壁纸,那么它必须满足以下两个条件: ... 阅读全文
posted @ 2013-05-21 14:18
知识天地
阅读(713)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了在Android系统中,无论是普通的Activity窗口,还是特殊的输入法窗口和壁纸窗口,它们都是被WindowManagerService服务组织在一个窗口堆栈中的,其中,Z轴位置较大的窗口排列在Z轴位置较小的窗口的上面。有了这个窗口堆栈之后,WindowManagerService服务就可以按照一定的规则计算每一个窗口的Z轴位置了,本文就详细分析这个计算过程。 基于窗口堆栈来计算窗口的Z轴位置是比较有意思的。按照一般的理解,应该是... 阅读全文
posted @ 2013-05-21 14:15
知识天地
阅读(1902)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8577789在Android系统中,Activity组件在启动之后,并且在它的窗口显示出来之前,可以显示一个启动窗口。这个启动窗口可以看作是Activity组件的预览窗口,是由WindowManagerService服务统一管理的,即由WindowManagerService服务负责启动和结束。在本文中,我们就详细分析WindowManagerService服务启动和结束Activity组件的启动窗口的过程。 Activity组件的启动窗口是由ActivityManagerServ... 阅读全文
posted @ 2013-05-21 14:07
知识天地
阅读(3361)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8452527前段时间参加了2012年度IT博客大赛,进了前十强,写了一篇获奖感言,不过还没正式在CSDN发表出来。眼看2012年就要结束了,刚好借这个机会将2012年度IT博客大十强获奖感言发表出来,也算是对2012年博客的一个总结,关键字是“梦想”、“学习”、“坚持”、“自信”、“淡定”。希望大家一如既往地支持老罗的CSDN专栏《老罗的Android之旅》以及老罗的新书《Android系统源代码情景分析》。 自2011年6月21日开博至今天2012年12月31日,在这560天里面,.. 阅读全文
posted @ 2013-05-21 14:02
知识天地
阅读(318)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8462738在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架。事实上,如果我们从整体的角度来看,Android应用程序窗口的实现要更复杂,因为它们的类型和作用不同,且会相互影响。在Android系统中,对系统中的所有窗口进行管理是窗口管理服务WindowManagerService的职责。在本文中,我们就将简要介绍WindowManagerService的职能以及制定学习计划。 我们知道,在Android系统中,同一时刻,只有一个Activity窗口... 阅读全文
posted @ 2013-05-21 14:01
知识天地
阅读(458)
评论(0)
推荐(0)
摘要:
出自:http://blog.csdn.net/luoshengyang/article/details/8479101 在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的。WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity窗口的大小。一个Activity窗口只有知道自己的大小之后,才能对它里面的UI元素进行测量、布局以及绘制。本文将详细分析WindowManagerService服务计算Activity窗口大小的过程。 一般来说,Activity窗口的大小等于整个屏幕的大小,但是它并不占... 阅读全文
posted @ 2013-05-21 13:59
知识天地
阅读(842)
评论(0)
推荐(0)
浙公网安备 33010602011771号