- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
疯狂Android讲义自学笔记Android应用与开发环境Android平台架构:底层采用Linux操作系统,其上采用软件叠层的方式构建了四层架构:应用程序层:例如SMS、地图、浏览器、联系人等,都是用Java编写的,是本书主要内容。应用程序框架:例如ActivityManager、WindowManager、ViewSystem、NotificationManager等。函数库:被不同组件使用的C/C++库的集合,不能直接调用,需要通过应用程序框架来调用。Android运行时:包括Android核心库集和Dalvik虚拟机,其中虚拟机负责运行Android应用程序,每个应用程序都运行在单独的Dalvik虚拟机内。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。Android应用的基本组件介绍:Activity和View:Activity是Window的容器,多个Activity组成Activity栈,当前活动的Activity位于栈顶。View组件是所有UI控件和容器控件的基类,需要通过Activity的setContentView方法显示。Service:通常位于后台执行,不与用户交互,没有图形界面,继承Service基类,有自己的生命周期。BroadcastReceiver:广播消息接收器,可用于监听Android应用的其他组件。ContentProvider:跨应用数据交换的标准。Intent和IntentFilter:Android应用内不同组件之间通信的载体,封装了当前组件需要启动或触发的目标组件的信息,分为显式Intent和隐式Intent。Android应用的清单文件AndroidManifest.xml:应用的全局描述文件,指定包名、组件及权限声明(P29)。Context:代表访问Android应用环境的全局信息,其本身是一个抽象类,Activity和Service都继承了Context,因此Activity和Service都可以直接作为Context使用。Android应用的界面编程视图View组件:所有UI组件都继承了View类,View类有一个子类:ViewGroup,作为其他组件的容器。View类的XML属性、相关方法和说明(P41):android:id=”@+id/show”:该控件的唯一标识,可以通过findViewById(“R.id.show”)来获取此组件。android:layout_width/height:match_parent:与父容器相同;wrap_content:长宽取决于内容。android:text:控件文本,可以直接设置字串,或者:”@string/name”android:onClick=”onClick”:指定单击事件的处理函数:public void onClick(View source) { … }使用XML布局文件来控制视图:在res/layout目录下放置XML文件,R.java会自动收录该资源,代码中以如下方法显示该视图:setContentView(R.layout.资源文件名);使用代码开发UI界面例程:P45、P46(简单图片浏览器)开发自定义View:通过重写View类的一个或多个方法,实现自定义的UI组件。可移动小球例程:P47LayoutInflater类:用来载入res/layout/下的xml布局文件并且实例化;而findViewById是找xml布局文件下的具体widget控件(如Button、TextView等)。对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate来载入,然后通过setContentView/setView方法设置并显示。对于一个已载入的界面,使用findViewById方法来获得其中的界面元素。如:TableLayout loginForm = (TableLayout) getLayoutInflater().inflate(R.layout.login, null);布局管理器:以ViewGroup为基类派生的布局管理器,可根据实际运行的平台动态调整组件的大小。线性布局LinearLayout:控制组件的横向或纵向排列,线性布局不会换行,当组件一个接一个排列到头之
文档评论(0)