摘要: ok, here's how it worked:I downloaded the Adt bundle and Copied the file "SDK Manager.exe" to the Android studio root directory and just executed it (this set the SDK environment variable to C:\Program Files\Android\android-studio\sdk).then In Android studio clicked Configure ==> Pr 阅读全文
posted @ 2013-05-21 17:10 知识天地 阅读(1668) 评论(0) 推荐(0)
摘要: 在Android Studio中新建项目时出现了以下问题:Yourandroid sdkis out of date or is missing templates. Please ensure you are using SDK version 22 or later.其实这是因为旧的SDK已经在你以前的Eclipse ADT Plugin中安装好了,我们只需要更新Android SDK Tool到版本22或更高即可,并将其引用在Android Studio中就行了,至于更新Android版本的问题的话,相信大家都会吧,呵呵,直接点击SDK Manager.exe就行啦。。 阅读全文
posted @ 2013-05-21 16:53 知识天地 阅读(35217) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8744683我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件。这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的。在打包之前,大部分文本格式的XML资源文件还会被编译成二进制格式的XML资源文件。在本文中,我们就详细分析XML资源文件的编译和打包过程,为后面深入了解Android系统的资源管理框架打下坚实的基础。 在前面Android资源管理框架(Asset Manager)简要介绍和... 阅读全文
posted @ 2013-05-21 15:28 知识天地 阅读(8798) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8791064在前面一篇文章中,我们分析了Android应用程序资源的编译和打包过程,最终得到的应用程序资源就与应用程序代码一起打包在一个APK文件中。Android应用程序在运行的过程中,是通过一个称为AssetManager的资源管理器来读取打包在APK文件里面的资源文件的。在本文中,我们就将详细分析Android应用程序资源管理器的创建以及初始化过程,为接下来的一篇文章分析应用程序资源的读取过程打下基础。 从前面Android应用程序窗口(Activity)的运行上下文环境(C... 阅读全文
posted @ 2013-05-21 15:27 知识天地 阅读(2040) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8806798 我们知道,在Android系统中,每一个应用程序一般都会配置很多资源,用来适配不同密度、大小和方向的屏幕,以及适配不同的国家、地区和语言等等。这些资源是在应用程序运行时自动根据设备的当前配置信息进行适配的。这也就是说,给定一个相同的资源ID,在不同的设备配置之下,查找到的可能是不同的资源。这个资源查找过程对应用程序来说,是完全透明的。在本文中,我们就详细分析资源管理框架是如何根据ID来查找资源的。 从前面Android应用程序资源管理器(Asset Manager)... 阅读全文
posted @ 2013-05-21 15:16 知识天地 阅读(1664) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8852432我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。除了指令集和类文件格式不同,Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT)、垃圾收集(GC)、Java本地方法调用(JNI)和Java远程调试协议(JDWP)等。本文对Dalvik虚拟机进行简要介绍,以及制定学习计划。老罗的新浪微博:http://weibo.com/shengyangluo,欢迎 阅读全文
posted @ 2013-05-21 15:15 知识天地 阅读(387) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8885792在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例。在本文中,我们就分析Dalvik虚拟机在Zygote进程中的启动过程。老罗的新浪微博:http://weibo.com/shengyangluo,欢迎 阅读全文
posted @ 2013-05-21 15:14 知识天地 阅读(1486) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8914953在前面一篇文章中,我们分析了Dalvik虚拟机在Zygote进程中的启动过程。Dalvik虚拟机启动完成之后,也就是在各个子模块初始化完成以及加载了相应的Java核心类库之后,就是可以执行Java代码了。当然,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C和C++代码。在本文中,我们就将继续以Zygote进程的启动过程为例,来分析Dalvik虚拟机的运行过程。老罗的新浪微博:http://weibo.com/shengyangluo,欢迎 阅读全文
posted @ 2013-05-21 15:13 知识天地 阅读(739) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8596449在Android系统中,同一时刻只有一个Activity组件是处于激活状态的,因此,当ActivityManagerService服务激活了一个新的Activity组件时,它就需要通知WindowManagerService服务将该Activity组件的窗口显示出来,这会涉及到将焦点和屏幕等资源从前一个激活的Activity组件切换到后一个激活的Activity组件的过程,本文就详细分析这个过程。 Activity窗口的切换操作是在新激活的Activity组件的启动过程... 阅读全文
posted @ 2013-05-21 15:05 知识天地 阅读(2950) 评论(0) 推荐(2)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8611754在前一文中,我们分析了Activity组件的切换过程。从这个过程可以知道,所有参与切换操作的窗口都会被设置切换动画。事实上,一个窗口在打开(关闭)的过程中,除了可能会设置切换动画之外,它本身也可能会设置有进入(退出)动画。再进一步地,如果一个窗口是附加在另外一个窗口之上的,那么被附加窗口所设置的动画也会同时传递给该窗口。本文就详细分析WindowManagerService服务显示窗口动画的原理。 在Android系统中,窗口动画的本质就是对原始窗口施加一个变换(Tra... 阅读全文
posted @ 2013-05-21 15:03 知识天地 阅读(1519) 评论(0) 推荐(0)
摘要: 出自:http://blog.csdn.net/luoshengyang/article/details/8636153 在前面一个系列的文章中,我们以窗口为单位,分析了WindowManagerService服务的实现。同时,在再前面一个系列的文章中,我们又分析了窗口的组成。简单来说,窗口就是由一系列的视图按照一定的布局组织起来的。实际上,每一个视图都是一个控件,这些控制可以将自己的UI绘制在窗口的绘图表面上,同时还可以与用户进行交互,即获得用户的键盘或者触摸屏输入。在本文中,我们就详细分析窗口控件的上述实现原理。 由于Android系统提供的控件比较多,因此我们只能挑一个比较有代表... 阅读全文
posted @ 2013-05-21 14:55 知识天地 阅读(431) 评论(0) 推荐(0)
摘要: 出自: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 知识天地 阅读(516) 评论(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 知识天地 阅读(3360) 评论(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 知识天地 阅读(316) 评论(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)