移动计算复习总结_第1页
移动计算复习总结_第2页
移动计算复习总结_第3页
移动计算复习总结_第4页
移动计算复习总结_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android考试总结考试总结 1、Android开发环境安装:需要哪些软件,大概安装步骤。开发环境安装:需要哪些软件,大概安装步骤。 1)安装JDK,并配置环境变量 2)安装eclipse,下载后无需安装,解压此文件到目标文 件即可 3)安装Android SDK,不仅包含了android模拟器和用于 eclipse的android开发工具插件(ADT),而且包括了各种 用来调试,打包以及在模拟器上安装应用工具。 4)安装ADT,为android开发提供开发工具的升级或者变 更。 5)设置Android SDK的位置。 2、SDK组成:重要子目录。组成:重要子目录。 add-ons 该目录存

2、放额外的附件(如Google提供地图开 发库函数),刚解压时该目录为空。 Platforms 用来存放SDK和AVD管理器下载的各种版本的 SDK。 platforms-tools 保存与平台调试相关的工具 Tools 保存通用的Android开发调试工具和Android手 机模拟器 Docs Android SDK的帮助文档,包含SDK平台、工具、ADT 等的介绍、开发指南、API文档、相关资源等。通过目 录下的offline.html文件启动 Extras 存放Android附加支持文件,主要包含android的 support支持包、google的几个工具和驱动。 Samples 存放各

3、种例子 system-images 存放模拟器要用到的镜像文件 3、Android常用开发工具。常用开发工具。 Dalvik虚拟机 Android Debug Bridge(Android调试桥) Hierarchy Viewer(层级阅览器) DDMS(Dalvik调试监视服务) LogCat Draw Nine-patch 其它工具 什么是Dalvik? nDalvik 是由谷歌公司的Dan Bornstein 设计并 编写的一款虚拟机。 qAndroid应用程序代码首先被编译为与机器无关的 指令,称为字节码,然后由移动设备上的Dalvik VM执行这些字节码。 n虽然字节码格式稍有不同,

4、但Dalvik 本质上是 一个针对低内存需求而优化的Java 虚拟机。 它允许同时运行多个VM 实例,并且能够充分 利用底层操作系统实现安全性和进程隔离。 n命名原因 qDalvik 是Bornstein 祖先居住的冰岛的一个渔村名 Android Debug Bridge nAndroid调试桥(Android Debug Bridge, adb)是一个允许开发者通过标准Java IDE在模 拟器和真实设备上调试Android代码的客户端 服务器工具。 q位于sdkplatform-tools目录下 nAndroid调试桥还可以进行以下操作: q快速更新设备或手机模拟器中的代码,如应用或 A

5、ndroid系统升级; q在设备上运行shell命令; q管理设备或手机模拟器上的预定端口; q在设备或手机模拟器上复制或粘贴文件; Hierarchy Viewer(层级阅览器) nHierarchy Viewer位于tools文件夹下,名为 hierarchyviewer.bat,是一个可视化工具。 nHierarchy Viewer能够显示出各组件的布局及其 联系,从而帮助开发者设计及调试用户界面。 n主要功能: q从可视化的角度直观地获得UI布局设计结构和各种 属性的信息,帮助开发者优化布局设计; q 结合debug帮助特定的UI对象进行invalidate和 requestLayou

6、t操作的过程。 DDMS(Dalvik调试监视服务) nDDMS (Dalvik Debug Monitor Service)是 由Android软件开发包(SDK)提供的调试程 序。开发人员可以使用DDMS提供的窗口来监 视模拟器或真实设备的调试,包括对文件和进 程的管理。 n通过DDMS可以查看和管理运行在设备上的进 程和线程、查看堆栈信息、连接到进程进行调 试。 nDDMS中的工具包括: q任务管理器、文件浏览器 q模拟器控制台和日志控制台 LogCat nLogCat是Android中一个命令行工具,可以用 于得到程序的log信息。 nAndroid日志系统提供了记录和查看系统调试 信

7、息的功能。日志都是从各种软件和一些系统 的缓冲区中记录下来的,缓冲区可以通过 logcat 命令查看和使用。 LogCat nandroid提供了自己的log输出api q位于android.util.Log中 n常用的打印日志的方法有5个,它们都会把日志 打印到LogCat中 qLog.v(tag,message); n/verbose模式,打印最详细的日志;调试颜色为黑色 qLog.d(tag,message); /debug级别的日志;蓝色 qLog.i(tag,message); /info级别的日志;绿色 qLog.w(tag,message); /warn级别的日志;橙色 qLog

8、.e(tag,message); /error级别的日志;红色 Draw Nine-patch nDraw Nine-patch位于sdktools目录下,以批 处理文件形式(draw9patch.bat)存在。 q允许使用所见即所得(WYSIWYG)的编辑器轻松 地创建NinePatch图形。 n与该工具对应的还有一个类NinePatch,其在包 android.graphics.NinePatch中。 qThe NinePatch class permits drawing a bitmap in nine sections. The four corners are unscaled;

9、the four edges are scaled in one axis, and the middle is scaled in both axes. Normally, the middle is transparent so that the patch can provide a selection about a rectangle. 4、使用、使用Eclipse + ADT创建创建Android应用程序的基本应用程序的基本 步骤。步骤。 1)创建一个AVD(Android Virtual Device) nEclipse开发环境下需3步: qWindow Android Virt

10、ual Device Manager 打开AVD管 理器。 q单击New.按钮,按照说明填写AVD 的字段 q单击OK创建虚拟设备 单击Start,然后单击Launch 打开AVD 2)创建Android工程 n打开Android工程向导: qFileNewProjectAndroidAndroid Application Project 3)运行,启动模拟器运行刚刚创建的project,需要在项目 名上单击右键选择Run as-Android Application来运行。 5、Android应用程序目录结构。 nsrc目录 qsrc目录是源代码目录,所有允许用户修改的java文件和 用户自

11、己添加的java文件都保存在这个目录中 ngen目录 qgen目录用来保存ADT自动生成的java文件,如R.java 或AIDL文件。 q这个目录中的文件不建议用户进行任何修改,如果用户 删除该目录中的文件,ADT会自动再次生成被删除的文 件。 nassets目录 qassets目录用来存放原始格式的文件 n例如音频、视频等二进制格式文件。 q此目录中的资源不能够被R.java文件索引,因此只能以 字节流的形式进行读取。 nbin目录 qbin目录保存了编译过程中的所产生的文件,以及最终生 产的apk文件。 nres目录 qres目录是资源目录,Android程序所有的图像、颜色、风 格、主

12、题、界面布局和字符串等资源都保存在其下的几个 子目录中。 qlayout目录 n用来保存与用户界面相关的布局文件 qdrawable-*dpi文件夹: n图标按分辨率的高低放入不同的目录,其中drawable- hdpi用来存放高分辨率的图标,drawable-mdpi用来存 放中等分辨率的图标,drawable-ldpi用来存放低分辨率 的图标,drawable-xhdpi用来存放超高分辨率的图标。 qvalues目录 n用于保存颜色、风格、主题和字符串等资源。 nandroid.jar文件 qandroid.jar文件是Android程序所能引用的函数库文件, Android系统所支持AP

13、I都包含在这个文件中 nProguard-project文件 qProguard-project文件是供ProGuard工具进行代码优化 和代码混淆使用的配置文件。 perties文件 perties文件记录了Android工程的相关设置, 例如编译目标和apk设置等,该文件不能手工修改 perties文件 q如果需要更改其中的设置,必须通过右键单击工程名称,选 择“Properties”进行修改过。 q从perties文件的代码中可以发现,大部分都是内 容注释,仅有第14行是有效代码,说明了Andr

14、oid程序的编 译目标。 6、AndroidManifest.xml文件结构及内容。文件结构及内容。 nAndroidManifest.xml qAndroidManifest.xml是应用程序的全局配置文件。 所有在Android中使用的组件(如 Activity,Service ,ContentProvider和Broadcast Receiver)都要在该 文件中声明,并且该文件还可以声明一些权限以及 SDK的版本等。 qAndroidManifest.xml包含了Android系统运行 Android程序前所必须的重要信息:应用程序名称 、图标、包名称、模块组成、授权和SDK最低版本

15、等。 q每个Android程序必须在根目录下包含一个 AndroidManifest.xml文件。 Android应用程序构成 nAndroidManifest.xml文件的代码如下: Android应用程序构成 nAndroidManifest.xml文件 qmanifest元素 nmanifest元素仅能包含一个application元素,application 元素中能够声明Android程序中最重要的四个组成部分, 包括Activity、Service、BroadcastReceiver和 ContentProvider,所定义的属性将影响所有组成部分 。 qactivity元素 n是

16、对Activity子类的声明,不在AndroidManifest.xml文件 中声明的Activity将不能够在用户界面中显示。 qintent-filter nintent-filter中声明了两个子元素action和category 。 nintent-filter使FirstProj程序在启动时,将MainActivity 这个 Activity作为默认启动模块。 7、R.java文件:生成及使用。文件:生成及使用。 qR.java文件是ADT自动生成的文件 q包含对drawable、layout和values目录内的资源 的引用指针,Android程序能够直接通过R类引 用目录中的资源

17、。 qR.java文件不能手工修改,所有代码必须由 ADT自动生成。如果向资源目录中增加或删除 了资源文件,则需要在工程名称上右击,在弹 出的快捷菜单中选择Refresh选项来更新R.java 文件中的代码。 8、资源引用方式:代码中引用、资源中引用。、资源引用方式:代码中引用、资源中引用。 q代码中引用资源,需要使用资源的ID,可以通 过R.resource_type.resource_name获取资源 ID nresource_type代表资源类型,也就是R类中 的内部类名称 nresource_name代表资源名称,对应资源的 文件名或在XML文件中定义的资源名称属性 q资源中引用资源,

18、引用格式: package:type/name n表示对资源的引用 npackage是包名称,如果在相同的包, package则可以省略 ntype是资源的类型,name是资源的名称 9、Android系统层次结构:四层,各层包含组件。系统层次结构:四层,各层包含组件。 n四层由上到下分别是 1)应用程序层 2)应用程序框架 3)系统运行库 4)Linux内核 10、Android应用程序四大组件。应用程序四大组件。 nActivity An Activity is an application component that provides a screen with which users

19、 can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. nService Service不直接与用户进行交互,没有用户界面,能够长期在后台运行, 且比Activity具有更高的优先级,在系统资源紧张时不会轻易被Android系 统终止。 nBroadcastReceiver 用来接收并响应广播消息的组件 不包含任何用户界面,可以启动Activity或者Notification 通知用户接收到重要信息 Android系统四大组件 nCon

20、tentProvider q是Android系统提供的一种标准的共享数据的机制, 应用程序通过ContentProvider访问其他应用程序的私 有数据 q如果想公开自己的数据,可以创建自己的 ContentProvider,需要继承ContentProvider类 如果你的数据和已存在的ContentProvider数据结构一致,可以 将数据写到已存在的ContentProvider中,前提是获取该 ContentProvider的权限。 qContentProvider不仅可以在应用程序之间共享数据, 而且还是标准的数据访问接口。 8.3 ContentProvider存储存储 v Uri

21、是一个通用资源标志符,将其分为A、B、C、D,4个部分: v A:无法改变的标准前缀,如;content:/、tel:/等。当前缀是content :/时,说明可通过ContentProvider控制这些数据; v B:URI的标识,它通过authorities属性声明,限制一个类的访问,用于限制 是哪个ContentProvider能够有权限提供这些数据。对于第三方应用程序,为 了保证URI标识的唯一性,它必须是一个完整的类名。 例如:content:/com.androidbook.client.contentprovider.DataProvider; v C:路径,可以近似的理解为需要

22、操作的数据库中表的名字。 如:content: /com.androidbook.client.contentprovider.DataProvider/Topic中的Topic; v D:如果URI中包含表示需要获取的记录的ID,则就返回该ID对应的数据,如 果没有ID,就表示返回全部。 11、Activity生命周期:状态及其变换途径,回调函数与生命生命周期:状态及其变换途径,回调函数与生命 周期分类的对应。周期分类的对应。 Activity状态状态 Active/Running qActivity处于屏幕的最前端,用户完全可以看得到,并且可以进行 交互。 q对于Activity栈来说,它

23、处于栈顶。 Paused qActivity在屏幕上仍然可见,但是它已经失去了焦点,用户不能与 之进行交互。 q暂停状态的Activity是存活的,它维持着其内部状态和信息,但是系 统可能会在手机内存极低的情况下杀掉该Activity。 Stop qActivity在屏幕上完全不能被用户看见,也就是说该Activity已经被 其他Activity全部遮住。 q系统仍然保留有其内部状态和成员信息,但是它经常会由于手机系 统内存被征用而被系统杀死回收 Killed qActivity被系统杀死回收或未启动。 Activity的状态转换 nActivity启动后处于Active/Running 状态

24、, 此时Activity处于屏幕的最上面。 n当用户启动了新的Activity,并且此Activity 部分遮挡了当前的Activity或拥有透明属性时 ,则当前的Activity转换为Paused状态。 n当用户启动的Activity完全遮住了当前的 Activity时,则当前的Activity转换为Stop状 态。 n处于Stop状态的Activity,当手机系统内存被 其他应用程序征用时,Stop状态的Activity将 首先被杀死,进入Killed状态。 nActive/Running状态的Activity被用户终止或 是Paused状态及Stop状态的Activity被系统 终止后,

25、Activity进入了Killed状态。 Activity生命周期的事件回调函数 n随着Activity自身状态的变化,Android系统 会调用不同的事件回调函数。在事件回调 函数添加相关代码,就可以在Activity状态 变化时完成适当的工作。 nActivity的主要事件回调函数 public class MyActivity extends Activity protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected

26、 void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); 注意:注意: (1)所有的Activiy都必须实现 onCreate()方法,在该方法中可以对 Activity进行一些初始化设置。 (2)所有的Activity生命周期方法的实 现都必须先调用其父类的方法。 Activity生命周期的事件回调函数 函数函数是否是否 可终止可终止 说明说明 onCreate()否Activity启动后第一个被调用的函数,常用来进行Activity的初始化, 例如创建Vi

27、ew、绑定数据或恢复信息等。 onStart()否当Activity显示在屏幕上时,该函数被调用。 onRestart()否当Activity从停止状态进入活动状态前,调用该函数。 onResume() 否当Activity可以接受用户输入时,该函数被调用。 onPause()是当Activity进入暂停状态时,该函数被调用。主要用来保存持久数据、 关闭动画、释放CPU资源等。该函数中的代码必须简短,因为另一 个Activity必须等待该函数执行完毕后才能显示在界面上。 onStop()是当Activity不对用户可见后,该函数被调用,Activity进入停止状态。 onDestroy() 是

28、在Activity被终止前,即进入非活动状态前,该函数被调用。可以分为 两种情况:(1)当程序主动调用finish()函数;(2)程序被Android 系统终结。 Android生命周期分类 完全生命周期可视生命周期活动生命周期 v 完全生命周期自第一 次调用onCreate()开始, 直至调用onDestroy() 为止 v Activity在onCreate() 中设置所有“全局” 状态以完成初始化 v 在onDestroy()中释放 所有系统资源 v 可视生命周期onStart() 开始到onStop()结束 v 在此期间,用户可以在 屏幕上看到该Activity v 在这两个方法中,你

29、可 以管理该Activity的资源 v 可以在onStart()中注册 一个BroadcastReceiver 来监控UI变化,而在 onStop()中取消该注册 v 活动生命周期自 onResume()调用开始, 至相应的onPause()调 用为止 v 在此期间,Activity位于 前台最上面,可与用户 进行交互 v 当设备转入休眠状态或 有新的Activity启动时, 将调用onPause() 方法 v 当Activity接收到新的 Intent的时候会调用 onResume()方法 Activity生命周期 n完全生命周期 q完全生命周期是从Activity建立到销毁的全部过 程,始

30、于onCreate(),结束于onDestroy() q一般在onCreate()中初始化Activity所能使用的全局 资源和状态,并在onDestroy()中释放这些资源。 n例如,Activity中使用后台线程,则需要在onCreate()中创 建线程,在onDestroy()中停止并销毁线程。 q在一些极端的情况下,Android系统会不调用 onDestroy()函数,而直接终止进程 Activity生命周期 n可视生命周期 q可视生命周期是Activity在界面上从可见到不可 见的过程,开始于onStart(),结束于onStop() qonStart() n一般用来初始化或启动与

31、更新界面相关的资源 qonStop() n一般用来暂停或停止一切与更新用户界面相关的线程 、计时器或Service服务等 qonRestart() n函数在onStart()前被调用,用来在Activity从不可见 变为可见的过程中,进行一些特定的处理过程 qonStart()和onStop()会被多次调用 Activity生命周期 n活动生命周期 q活动生命周期是Activity在屏幕的最上层,并能 够与用户交互的阶段,开始于onResume(),结 束于onPause()。 q在Activity的状态变换过程中onResume()和 onPause()经常被调用,因此这两个函数中应使 用更

32、为简单、高效的代码 12、Logcat的使用:的使用:Log.?()。 n在程序中添加包 qimport android.util.Log; n在目标函数中添加输出语句 q具体函数说明,可以参考对应的API文档 如何使用LogCat? n在LogCat中设置过滤器,输出信息 13、Intent的概念和用途。的概念和用途。 q主要解决Android应用中组件之间的通讯。 qIntent负责对应用中一次操作的动作、动作涉及的数 据、附加数据进行描述,Android则根据此Intent的描 述,负责找到对应的组件,将 Intent传递给调用的组 件,并完成组件的调用。 q因此,Intent在Andr

33、oid开发中起着一个媒体中介的 作用,专门提供组件互相调用的相关信息,实现调用 者与被调用者之间的解耦。 14、启动、启动Activity的方法。的方法。 n(借鉴跳转) 在使用Intent进行Activity之间的跳转时,我们通 常有三种Intent跳转方式,即: q不带参数的跳转 q带参数的跳转 q带返回值的跳转 1)不带参数的跳转 n Intent intent = new Intent(); n intent.setClass(Activity1.this,Activity2.class); startActivity(intent); Activity的跳转 n带参数的跳转(用Bun

34、dle封装数据) qActivity1跳转到Activity2之后,Activity2通过Bundle 获取Intent传过来的值,方法如下: Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString(Name, kate); bundle.putString(Age, 25); intent.putExtras(bundle); intent.setClass(Activity1.this, Activity2.class); startActivity( intent ); Bundle bun

35、dle = this.getIntent().getExtras(); String name = bundle.getString(Name); String age = bundle.getString(Age); Activity的跳转 n带返回值的跳转(用Bundle封装数据) qSometimes you want to get a result back from an activity when it ends. For example, you may start an activity that lets the user pick a person in a list of

36、 contacts; when it ends, it returns the person that was selected. qTo do this, you call the version with a second integer parameter identifying the call. The result will come back through your method. Activity的跳转 n带返回值的跳转(用Bundle封装数据) q第一个页面的代码如下所示 nstartActivityForResult(Intent intent, Int requestC

37、ode)方法中的 参数 requestCode用于识别第二个页面传回来的值。 q第二个页面准备返回数据的代码如下所示 Intent intent=newIntent(); intent.setClass( Activity1.this, Activity2.class); this.startActivityForResult( intent, 0); Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle. putString(“Name, ZhangSan); intent.putExtra(bundle); i

38、ntent.setClass(Activity2.this,Activity1.class); setResult( RESULT_OK, intent); finish(); Activity的跳转 n带返回值的跳转(用Bundle封装数据) q第一个页面接收返回值的代码如下所示 protected void onActivityResult(int requestCode, int resultCode, Intent data) switch (requestCode ) /requestCode为为Activity1的请求标识的请求标识 /resultCode为回传的标记,在为回传的标

39、记,在Activity2中使用的是中使用的是RESULT_OK,所以此处进行选择,所以此处进行选择 case 0: if(resultCode = RESULT_OK) Bundle b=data.getExtras(); /data为Activity2中回传的Intent String str=b.getString(“Name);/str即为回传的值参数值 break; default: break; n15、获取、获取Activity返回值的方法。返回值的方法。(见前带见前带 返回值的跳转代码返回值的跳转代码) 16、Layout XML文件的解读。文件的解读。(仅列出相仅列出相 关属性

40、含义关属性含义) 18.TextView和和EditText XML文件中文件中TextView属性属性对应表示对应表示 android:layout_height该控件显示时的高度 android:layout_width该控件显示时的宽度 android:id=+id/textView1该控件的id,在布局文件中或者代码中被引用 android:textStyle=boldTextView里面的字加粗显示 android:layout_height=wrap_content该控件的高度为其包含内容的高度 android:layout_width=wrap_content该控件的宽度为其包含

41、内容的宽度 android:text=string/signin显示的内容,这里表示存放在string.xml文件 中name=signin的文本 android:layout_height=40dip设置具体的高度 android:textColor=#7089c0设置文本的颜色 android:textSize=18sp设置文本的大小 android:gravity=center_vertical设置文本纵向居中 android:paddingLeft=5dip设置内边距 android:layout_marginTop=5dip设置外边距 18 TextView和和EditText v

42、EditText属性的大部分设置与TextView是一样的,这里仅介绍EditText与 TextView不同的属性: XML文件中文件中EditText属性属性对应表示对应表示 android:hint=string/name输入之前的提示,当EditText获得输入焦点,并 输入文字时,该文本自动消失,起提示的作用; android:singleLine=true该文本输入框不可换行输入,只能在一行内输 入文本 android:password=true该文本输入框是用来输入密码的,输入的文本 会自动装换为“”,起到隐藏用户密码的作用。 18 ImageView 三者属性值的设置是相似的,

43、原因是它们的父类即View类相同,而View类实现了它们 中大部分相同的属性和功能,也就是说,对于这些View类的子类,使用方式是相似的 ,读者可以举一反三来学习其各个属性。 XML文件中文件中ImageView属性属性对应表示对应表示 android:src=drawable/icon_refresh 设置填充的图片,和TextView相比, TextView填充的是文本,ImageView 填充的是图片资源; android:scaleType=center 图片以何种方式填充到View对应的 矩形区域。 17、事件监听器编写。、事件监听器编写。 nButton事例事例 nbutton01

44、.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub textView01.setText(button down); ); nListView事例事例 nAdapterView.OnItemClickListener listViewListener = new AdapterView.OnItemClickListener() nOverride npublic void onItemClick(Adapter

45、View arg0, View arg1, int arg2, long arg3) nString msg = 父View:+arg0.toString()+n+子View :+arg1.toString()+n+位置:+String.valueOf(arg2)+,ID: +String.valueOf(arg3); ntextView.setText(msg); ; nlistView.setOnItemClickListener(listViewListener); CheckBox控件 nOnCheckedChangeListener监听器 RadioButton控件 OnChecke

46、dChangeListener监听器 18、不同界面布局的特点。、不同界面布局的特点。 nLinearLayout nRelativeLayout nFrameLayout nTableLayout nAbsoluteLayout LinearLayout n 线性布局,是指该容器(LinearLayout)内子 控件的摆放方式有两种 q水平放置(HORIZONTAL) n指的是该容器里面存放的控件或者容器只能以一行的形式出现 ,放置的控件只能是该行中的某个位置,两个控件或者容器之 间只有左右关系没有其他方向上的关系。 n当放置水平方向满屏时不会自动换行,再放置的控件将在屏幕 之外存在,无法看

47、见。 q垂直放置(VERTICAL) n相对水平放置来讲,垂直放置就相当于一列,放置的控件或者 容器只能在该列中的某个位置,两个控件之间只存在上下方向 的关系,不存在其他方向上的关系。 n当这一列放满后,再添加的控件就至于屏幕之外存在,无法看 见。 RelativeLayout n相对布局,是指利用控件之间的相对位置关系来对布局进 行放置。换句话说,在该容器中的控件与其他任何一个控 件或者容器(包括父控件)有相对关系。 FrameLayout 帧布局,是指该容器内放置的控件或者容器没有上下左右的 关系,只有层叠前后的关系。放置在容器内的控件按放置 的前后顺序逐一层叠摆放,自然地后面摆放的控件就

48、将前 面摆放的控件覆盖了,叠在它的上面了。 TableLayout 表格布局,指该容器是一个表格,放置控件时,控件的位置坐落在表格 的某个位置上。其中TableRow是配合TableLayout使用的,目的是为 了让TableLayout生成多个列,否则TableLayout中就只能存在一列元 素,但可以有多行。 nAbsoluteLayout n绝对布局,是指以屏幕左上角为坐标原点(0,0),控件 在容器中的位置以坐标的形式存在,可以随意指定控件的 坐标位置,非常灵活。 n在开发过程中很少使用,原因是屏幕兼容性不好,不便控 制两个控件之间的位置。其中控件或者容器放置的位置通 过android

49、:layout_x和android:layout_y这两个属性进行设 置。 19、对话框的使用。、对话框的使用。(见最后)(见最后) 20、菜单的分类和使用。、菜单的分类和使用。 nAndroid系统支持三种菜单 q5.4.1 上下文菜单 q5.4.2 选项菜单 q5.4.3 下拉菜单(Spinner) 5.4.1 上下文菜单 nAndroid系统中的ContextMenu(上下文菜单)类 似于PC中的右键弹出菜单,当一个视图注册 了上下文菜单时,长按该视图对象将出现一个 提供相关功能的浮动菜单。 n上下文菜单可以被注册到任何视图对象中,最 常见的是用于列表视图ListView中。 q上下文菜

50、单不支持图标和快捷键。 5.4.1 上下文菜单 n上下文菜单的使用步骤 q在Activity中使用上下文菜单,复写 onCreateContextMenu() 和 onContextItemSelected()方法; q使用registerForContextMenu(View)方法为视图 控件View注册上下文菜单。 q在onCreateContextMenu(.ContextMenu menu) 中添加菜单项menu.add(.); q在onContextItemSelected()中通过设置菜单的id来 实现菜单子项的监听。 5.4.1 上下文菜单 n注册上下文菜单 public voi

51、d onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); txt = (TextView) findViewById(R.id.txt); / 为文本框注册上下文菜单 registerForContextMenu(txt); 5.4.1 上下文菜单 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) / 创建菜单项 参数的填写:

52、menu.add(1, 0, 0, R.string.reply); menu.add(1, 1, 1, R.string.delete); super.onCreateContextMenu(menu, v, menuInfo); public boolean onContextItemSelected(MenuItem item) / 获得上下文菜单的相关信息 AdapterView.AdapterContextMenuInfo menuInfo; menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); / 对

53、选项点击事件的回调 switch (item.getItemId() case 0: replyLetter(menuInfo.position); break; case 1: deleteLetter(menuInfo.position); default: break; return super.onContextItemSelected(item); 5.4.2 选项菜单 n当Activity在前台运行时,如果用户按下手机上 的Menu键,此时就会在屏幕底端弹出相应的 选项菜单。但这个功能需要开发人员编程来实 现,如果在开发应用程序时没有实现该功能, 那么程序运行时按下手机的menu键

54、是不会起 作用的。 n对于携带图标的选项菜单,每次最多只能显示 6个,当菜单选项多于6个时,将只显示前5个 和一个扩展菜单选项,点击扩展菜单选项将会 弹出其余的菜单项。扩展菜单项中将不会显示 图标,但是可以显示单选框和复选框。 5.4.2 选项菜单 n选项菜单的使用步骤: q在Activity中复写onCreateOptionsMenu(.)和 onOptionsItemSelected(.)方法; q在onCreateOptionsMenu(Menu menu)中添加 菜单选项,有两种方式:a、调用menu.add(.) ,b、从布局文件中添加,在res下新建menu文 件夹,创建menu文

55、件,填写相应的选项; q在onOptionsItemSelected(.)通过设置菜单的id 来实现菜单子项的监听。 5.4.2 选项菜单 public boolean onCreateOptionsMenu(Menu menu) / 状态R.menu.context对应的菜单,并添加到menu中 getMenuInflater().inflate(R.menu.my_menu, menu); return super.onCreateOptionsMenu(menu); public boolean onOptionsItemSelected(MenuItem mi) / 判断单击的是哪个菜

56、单项,并针对性的作出响应。 switch (mi.getItemId() case R.id.font_10: mi.setChecked(true); txt.setTextSize(10 * 2); break; case R.id.red_font: txt.setTextColor(Color.RED); mi.setChecked(true); break; return true; 5.4.3 下拉菜单(Spinner) n严格来讲Spinner不算是一个菜单,但是其操 作和表现形式具有菜单的行为。 nSpinner的有效使用可以提高用户体验。当用 户需要选择的时候,可以提供一个下

57、拉列表将 所有可选的项列出,供用户选择。 5.4.3 下拉菜单(Spinner) nSpinner的使用步骤 q获得Spinner实例对象,在布局文件中获得或代 码中均可; q为Spinner配置一个数据适配器(ListAdapter, 后面小节有详细讲解)用来提供数据的显示的 控制; q监听Spinner的数据点击事件。 nToast是一种短暂的消息,它会自行显示和消 失,不需要用户干预。而且,它不会从当前活 动的Activity那里获取焦点,所以如果用户正忙 于编写一部优秀的编程指南,那么他的输入不 会被该消息打断。 n由于Toast是短暂的,所以无法知道用户是否 已注意到它。你不会得到任

58、何确认,消息也不 会出现太长时间,以至于影响到用户。因此, Toast通常用于建议性的消息,例如提示一个 运行时间很长的后台任务已经完成,电池电量 低(但不是太低),等等。 21、Toast类的使用。类的使用。 n构建Toast非常简单。Toast类提供了一个静态 makeText()方法,它接受一个String(或字符串 资源ID)并返回一个Toast实例。makeText()方 法还需要Activity (或其他Context)以及一个持 续时间。持续时间表示LENGTH_SHORT或 LENGTH_LONG常量形式,以相对方式指示 消息应该显示多久。 n例如: qToast.makeTe

59、xt(getApplicationContext(), 默认Toast样式, Toast.LENGTH_SHORT).show(); 22、Service组件生命周期:生命周期分类以及回调组件生命周期:生命周期分类以及回调 函数对应。函数对应。 nService生命周期包括 q完全生命周期 n完全生命周期从onCreate()开始到onDestroy()结束, 在onCreate()中完成Service的初始化工作,在 onDestroy()中释放所有占用的资源。 q活动生命周期 n活动生命周期从onStart()开始,但没有与之对应的“ 停止”函数,因此可以粗略的认为活动生命周期是以 onD

60、estroy()标志结束。 nService管理主要指Service的启动和停止。 n首先介绍实现Service的最小代码集。 q第1行到第3行引入必要包;第5行声明了 ExampleService继承android.app.Service类;在第7行 到第9行重载了onBind()函数。 import android.app.Service; import android.content.Intent; import android.os.IBinder; public class ExampleService extends Service Override public IBinder

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论