(完整word版)Android考试题简答题总结_第1页
(完整word版)Android考试题简答题总结_第2页
免费预览已结束,剩余9页可下载查看

下载本文档

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

文档简介

1、1. 活动的生命周期与进程的生命周期无关;进程是各种活动可随意使用的一个容器;2. 可以在 DOS 命令行中调用 Aandroid 工具,进行开发、调试、编译、打包、部署等;3. 调用 Android SDK 中的工具可以可视化的在布局文件中添加、删除、视图组件,提高了开发效率;4. src 源文件夹;gen 保存自动生成 R 资源类文件夹;assets 保存原生资源文件夹;res 资源文件夹;AndroidManifest.xml(Android配置清单文件);perties( 属性文件);5. Android 应用程序的代码文件:FirstActivityAct.ja

2、va( 活动类);R.java(资源索引类);strings.xml( 声明系统中用到的字符串常量);降低耦合行;提高效率; main.xml(布局文件,声明程序中用到的视图组件);AndroidManifest.xml(全局配置文件,声明用到的组件、权限、版本;6. Android 应用程序不能直接使用编译后的类文件(.class) ; dx 命令将 java 编译后的类文件(.class)转换成 Dalvik 虚拟机可执行的文件(.dex);7. 模拟器没有真正的数据存储设备;mksdcard 命令将硬盘空间镜像为数据存储设备;8.如何给模拟器上传资料:DDMS DOW 命令9. Andr

3、oid 保存视图状态时,遍历视图层次结构中的每个视图,每发现一个有ID 的视图,就调用 View.onSavelnstanceState() 方法;视图状态被保存在 Bundle 类实例中;调用 onRestorelnstanceState() 方法 用于恢复保存在 Bundle 实例中的视图状态10. 使用 ListView 绑定数据库查询结果11. ContentProvider :进程在系统中将它们本身注册为某些数据类型的提供者。请求该信息时,Android就会通过一个固定的 API 调用这些进程,以它们认为适合的方式查询或修改内容。ContentProvider 是一个类似 Activ

4、ity 的高级对象,需要向系统声明12. EventProvider 类,扩展 ContentProvider ,在重载的方法中实现了对数据记录的查询、插入、删除、 更新等操作。通过 EventProvider 类,系统中创建了一个可以被其他程序使用的数据存储框架,其他开发 人员编写的应用程序也可以使用这一框架对数据库进行访问简答题:1.谈谈 an droid 大众常用的五种布局。(创建启动界面的常用布局)答:在 Android 中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeL

5、ayout(相对布局),TableLayout(表格布局)。(1)FrameLayout 框架布局,放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素,适合浏览单张图片。(2)LinearLayout 线性布局,是应用程序中最常用的布局方式,主要提供控件水平或者垂直排列的模型,每个子组件都是以垂直或水平的方式来定位(默认是垂直)。AbsoluteLayout 绝对定位布局,采用坐标轴的方式定位组件,左上角是(0, 0)点,往右x 轴递增,往下 Y 轴递增,组件定位属性为 android:layout_x 和 android:lay

6、out_y 来确定坐标。(4)RelativeLa yout相对布局,根据另外一个组件或是顶层父组件来确定下一个组件的位置。和CSS 里面的类似。(5)TableLayout 表格布局,类似 Html 里的 Table.使用 TableRow 来布局,其中 TableRow 代表一行,TableRow 的 每一个视图组件代表一个单元格。2. 谈谈 an droid 数据存储方式。答:Android 提供了 5 5 种方式存储数据:使用 SharedPreferences 存储数据;它是 Android 提供的用来存储一些简单配置信息的一种机制,采用了 XML 格式将数据存储到设备中。只能在同一

7、个包内使用,不能在不同的包之间使用。(2)文件存储数据;文件存储方式是一种较常用的方法, 在 Android 中读取/写入文件的方法,与 Java 中实现 I/O 的程序是完全一样的,提供了openFilelnput()和 openFileOutput()方法来读取设备上的文件。(3)SQLite 数据库存储数据;SQLite 是 Android 所带的一个标准的数据库,它支持 SQL 语句,它 是一个轻量级的嵌入式数据库。(4)使用 ContentProvider 存储数据;主要用于应用程序之间进行数据交换,从而能够让其他的应用保存或读取此Content Provider 的各种数据类型。(

8、5)网络存储数据;通过网络上提供给我们的存储空间来上传(存储)和下载俄取)我们存储在网络空间中的数据信息。3. Android 中 Activity, Intent, Content Provider, Service各有什么区别。答:Activity :活动,是最基本的 android 应用程序组件。一个活动就是一个单独的屏幕,每一个活动都被 实现为一个独立的类,并且从活动基类继承而来。Intent :意图,描述应用想干什么。最重要的部分是动作和动作对应的数据。Content Provider:内容提供器,android 应用程序能够将它们的数据保存到文件、SQLite 数据库中,甚至是任何

9、有效的设备中。当你想将你的应用数据和其他应用共享时,内容提供器就可以发挥作用了。Service :服务,具有一段较长生命周期且没有用户界面的程序。4. View,surfaceView, GLSurfaceView 有什么区别。答:view 是最基础的,必须在 UI 主线程内更新画面,速度较慢。SurfaceView 是 view 的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view 快。GLSurfaceView 是 SurfaceView 的子类,opengl 专用的。5. Adapter 有什么作用?常见的 Adapter 有哪些?答:Adapter 是连接后端数据和

10、前端显示的适配器接口。常见的Adapter 有 ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapte r,SpinnerAdapter, WrapperListAdapter 等。6. Ma nifest.xml文件中主要包括哪些信息?答:manifest:根节点,描述了 package 中所有的内容。uses-permission:请求你的 package 正常运作所需赋 予的安

11、全许可。permission:声明了安全许可来限制哪些程序能你package 中的组件和功能。instrumentation :声明了用来测试此 package 或其他 package 指令组件的代码。application :包含 package 中 application级别组件声明的根节点。activity : Activity 是用来与用户交互的主要工具。receiver: IntentReceiver 能使的 application 获得数据的改变或者发生的操作,即使它当前不在运行。service: Service 是能在后台运行任意时间的组件。provider : Contentp

12、rovider 是用来管理持久化数据并发布给其他应用程序使用的组件。7. 根据自己的理解描述下An droid 数字签名。答:(1)所有的应用程序都必须有数字证书,Android 系统不会安装一个没有数字证书的应用程序。(2)Android 程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。(3)如果要正式发布一个 Android,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt 插件或者 ant工具生成的调试证书来发布。(4)数字证书都是有有效期的,Android 只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也

13、不会影响程序的正常功能。8. 请谈一下 An droid系统的架构。答:Android 系统采用了分层架构,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux 核心层。9. 请描述下 Activity的生命周期。必调用的三个方法: onCreate() - onStart() - onResume(),用 AAA 表示(1 )父 Activity 启动子 Activity ,子 Actvity退出,父 Activity 调用顺序如下 AAA - onFreeze() - onPause() - onStop() - onRestart() - onStart(),onRes

14、ume() (2)用户点击 Home Actvity 调用顺序如下 AAA - onFreeze() - onPause() - onStop() Maybe - onDestroy() - Maybe (3)调用 finish(), Activity调用顺序如下AAA - onPause() - onStop() - onDestroy() (4)在 Activity 上显示dialog ,Activity 调用顺序如下 AAA (5)在父 Activity 上显示透明的或非全屏的 activity , Activity 调用顺序如下 AAA - onFreeze() - onPause()

15、 (6)设备进入睡眠状态,Activity 调用顺序如下 AAA - onFreeze() - onPause()10.如果后台的 Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?on SaveI nsta nceState() 当你的程序中某一个 Activity A在运行时,主动或被动地运行另一个新的ActivityB,这个时候 A 会执行 onSavelnstanceState() 。B 完成以后又会来找 A,这个时候就有两种情况:一是 A 被回收,二是 A 没有被回收,被回收的A 就要重新调用 onCreate()方法,不同于直接启动的是这回onCreate(

16、)里是带上了参数 savedInstanceState ;而没被收回的就直接执行onResume(),跳过 onCreate()了。11.如何将一个 Activity设置成窗口的样式。在 AndroidManifest.xml 中定义 Activity的地方一句话 android:theme=android:style/Theme.Dialog或 android:theme=android:style/Theme.Translucent就变成半透明的12.如何退出 Activity ?如何安全退出已调用多个Activity 的 Application ?对于单一 Activity的应用来说,退

17、出很简单,直接finish()即可。当然,也可以用killProcess() 和System.exit()这样的方法。但是,对于多 Activity的应用来说,在打开多个Activity 后,如果想在最后打开的 Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。没有办法直接结束一个应用, 而只能用自己的办法间接办到。现提供几个方法,供参考:1、抛异常强制退岀:该方法通过抛异常,使程序 ForceClose。验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出 Force Close 的窗口。2、记录打开的 Activity :每打开一个

18、Activity,就记录下来。在需要退出时,关闭每一个 Activity 即可。3、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。4、递归退出:在打开新的Activity 时使用 startActivityForResult,然后自己加标志,在 onActivityResult中处理,递归关闭。除了第一个,都是想办法把每一个Activity 都结束掉,间接达到目的。但是这样做同样不完美。你会发现,如果自己的应用程序对每一个Activity 都设置了nosensor,在两个 Activity 结束的间隙,sensor 可能有效了。但至少,我们的目的

19、达到了,而且没有影 响用户使用。为了编程方便,最好定义一个Activity 基类,处理这些共通问题。13.请介绍下 ContentProvider是如何实现数据共享的。创建一个属于你自己的 Content provider或者将你的数据添加到一个已经存在的Content provider 中,前提是有相同数据类型并且有写入Content provider 的权限。14 . View 重绘和内存泄露的好像是面试经常问的问题1. View 的刷新:在需要刷新的地方使用handle.sendmessage 发送信息,然后在 handle 的 getmessage 里面执行 invaliate 或者

20、postinvaliate.View 可以调用 invalidate。 和 postlnvalidate() 这两个方法刷新 View 受系统刷新(系统内部有个循环,监控事件、做业务处理、绘UI),可以用 postInvalidate()促使系统刷新。2. GC 内存泄露 出现情况:1.数据库的 cursor 没有关闭 2.构造 adapter 时,没有使用缓存 contentview衍生 listview的优化问题减少创建 view 的对象,充分使用 contentview,可以使用一静态类来优化处理 getview 的过程/ 3.Bitmap对象不使用时采用 recycle()释放内存 4

21、.activity中的对象的生命周期大于 activity调试方法:DDMS= HEAPSZIE=dataobject=Total Size15.DDMSf TraceView 的区别?DDMS!一个程序执行查看器,在里面你可以看见线程和堆栈等信息,TraceView 是程序性能分析器16.如何将打开 res aw 目录中的数据库文件?在 Android 中不能直接打开 res aw 目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机 内存或 SD 卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用 getResources().openRawResource 方法获得

22、res aw目录中资源的 Inputstream 对象,然后将该 InputStream 对象中的数据写入其他的目录中相应文件中。在 Android SDK中可以使用 SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite 数据库文件。17.An droid dvm 的进程和 Lin ux 的进程,应用程序的进程是否为同一个概念DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个 DVM 都是在 Linux 中的一个进程,所以说可以认为是同一个概念。18.s

23、im 卡的 EF 文件有何作用sim 卡的文件系统有自己规范,主要是为了和手机通讯,sim 本 身可以有自己的操作系统,EF 就是作存储并和手机通讯用的19.什么是嵌入式实时操作系统,An droid 操作系统属于实时操作系统吗?嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果 又能在规定的时间之内来控制生产过程或对处理系统作岀快速响应,并控制所有实时任务协调一致运行的 嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而 android 是基于 linux 内核

24、的,因此属于软实时。20.一条最长的短信息约占多少byte?中文 70(包括标点),英文 160,160 个字节。21. an droid 中的动画有哪几类,它们的特点和区别是什么?两种,一种是 Tween 动画、还有一种是 Frame 动画。Tween 动画,这种实现方式可以使视图组件移动、放 大、缩小以及产生透明度的变化;另一种 Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实 现,类似电影。22 handler 机制的原理andriod 提供了 Handler 和 Looper 来满足线程间的通信。 Handler 先进先出原则。 Looper 类用来管理特 定线程内对象

25、之间的消息交换 (Message Exchange) 。1) Looper: 个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue(消息队列)。2) Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来的消息。3) Message Queue(消息队列):用来存放线程放入的消息。4) 线程: UI thread 通常就是 main thread ,而 Android 启动程序时会替它建立一个 Message Queu

26、e。23说说 mvc模式的原理,它在 android 中的运用android 的官方建议应用程序的开发采用mvc 模式。何谓 mvc? mvc 是 model,view,controller的缩写,mvc包含三个部分:l 模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。l 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc 架构中用户唯一可以看到的一层, 接收用户的输入, 显示处理结果。l 控制器( control )对象: 是根据用户的输入, 控制用户界面数据 显示及更新 model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的

27、相关事件,交给mvc处理。android 鼓励弱耦合和组件的重用,在android 中 mvc 的具体体现如下:1)视图层(view):一般采用 xml 文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android 了解的比较的多了话,就一定 可以想到在 android 中也可以使用 javascript+html 等的方式作为 view 层,当然这里需 要进行 java 和javascript 之间的通 信,幸运的是, android 提供了它们之间非常方便的通信实现。 2)控 制层( controller ): android的控制层的重 任通常落在了众多的 acitvi

28、ty 的肩上,这句话也就暗含了 不要在 acitivity 中写代码,要通过 activity 交割model 业务逻辑层处理, 这样做的另外一个原因是 android 中的 acitivity的响应时间是 5s,如果耗时的操作放在这里,程序就很容易被回收掉。3)模型层(model) :对数据库的操作、对网络等的操作都应该在 model 里面处理,当然对业务计算等操作也是必须 放在的该层的。24.如何启用 Service ,如何停用 Service 。1 第一种是通过调用 Context.startService() 启动, 调用 Context.stopService() 结束, start

29、Service() 可以 传递参数给 Service 2第二种方式是 通过调用 Context.bindService() 启动, 调用 Context.unbindservice() 结束,还可以通过ServiceConnection 访问 Service 。在 Service 每一次的开启关闭过程中,只有 onStart 可被多次调用 (通过多次 startService 调用),其他 onCreate ,onBind , onUnbind , onDestory 在一个生命周期中只能被调用一次。25.请解释下 Android 程序运行时权限与文件系统权限的区别。apk 程序是运行在虚拟机

30、上的 , 对应的是 Android 独特的权限机制,只有体现到文件系统上时才使用 linux 的权限设置。android 系统有的权限是基于签名的。26 、 简 要 解 释 一 下 activity 、 intent 、 intent filter 、 service 、 Broadcase 、 BroadcaseReceiver答:一个 activity 呈现了一个用户可以操作的可视化用户界面 一个 service 不包含可见的用户界面, 而 是在后台无限地运行 可以连接到一个正在运行的服务中,连接后,可以通过服务中暴露出来的借口与 其进行通信 一个 broadcastreceiver 是一

31、个 接收广播消息并作出回应的 component, broadcastreceiver 没有界面 intent:contentprovider 在接收到 ContentResolver 的请求时被激活。 activity,service 和 broadcast receiver 是被称为 intents 的异步消息激活的。一个 intent 是一个 Intent 对象,它保存了消息的内容。对于 activity 和 service 来说,它指定了请求的操作名称和待操作数据的 URI Intent 对象可以显式的指定一个目标component。如果这样的话,android 会找到这个 compo

32、nent 基于manifest 文件中的声明 )并激活它。但如果一个目标不是显式指定的, android 必须找到响应 intent 的最 佳 component。它是通过将 Intent 对象和目标的 intent filter 相比较来完成这一工作的。一个component 的 intent filter 告诉 android 该 component 能处理的 intent 。 intent filter 也是在 manifest 文件中声明的。27、横竖屏切换时候 activity 的生命周期 ?1、不设置 Activity 的 android:configChanges 时,切屏会重新

33、调用各个生命周期, 切横屏时会执行一次, 切竖屏时会执行两次 2 、设置 Activity 的 android:configChanges= ”orientation ”时,切屏还是会重新 调 用 各 个 生 命 周 期 ,切 横 、 竖 屏 时 只 会 执 行 一 次 3 、 设 置 Activity 的 android:configChanges= ”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法28. 如何将 SQLite 数据库 (dictionary.db 文件)与 apk 文件一起

34、发布 ?可以将 dictionary.db 文件复制到Eclipse Android 工程中的 res aw 目录中。所有在 res aw 目录中的文 件不会被压缩,这样可以直接提取该目录中的文件。可以将 dictionary.db 文件复制到 res aw 目录中29、 android 的优势与不足Android 平台手机 5 大优势 :一、开放性二、挣脱运营商的束缚 三、丰富的硬件选择 四、不受任何限 制的开发商 五、无缝结合的 Google 应用Android 的 5 大不足 : 一、安全和隐私二、首先开卖 Android 手机的不是最大运营商三、运营商仍然能够影响到 Android 手

35、机 四、同类机型用户减少五、过分依赖开发商缺少标准配置30. Android 引入广播机制的用意 ?答:a:从 MVC 的角度考虑(应用程序内)其实回答这个问题的时候还可以这样问,android 为什么要有那 4大组件,现在的移动开发模型基本上也是照搬的web 那一套 MVC 架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC 架构,它们之间有时候是一种相互依存的关系,有时候又是一 种补充关系,引入广播机制可以方便几大组件的信息和数据交互。b:程序间互通消息(例如在自己的应用程序内监听系统来电)c:效率上(参考 UDP 的广播协议在局域网的方

36、便性)d:设计模式上(反转控制的一种应用,类似监听者模式)31. Activity活动一个活动就是一个用户界面屏幕;应用程序可以定义一个或多个活动,用来处理程序不同阶段中的任务; 活动是应用程序生命周期的组成部分,每个活动都要保存自己的状态,以便之后还原这些状态;32. View 视图View 是 Android 中图形用户界面的基类,提供了可视化界面的展示;Android 图形界面展示层次:上层: Views View (基本控件,如按钮、单复选框、菜单等)ViewGroup (布局控件;作为容器的视图)中层: Window (默认窗体)底层: Activity33.Intent 意图意图是

37、一种描述具体动作的机制;动作;动作对应的数据;意图用于激活 Activity 、Service 和 Broadcast Receiver 组件;34. 应用程序的生命周期onCreate(Bundle)首次启动活动时调用;执行一次初始化(如 创建用户界面);该方法的参数可以是 null 或由 onSaveInstanceState 方法以前保存的状态信息;onStart()说明将要显示给用户的活动;onResume()用户开始与活动交互时调用;onPause ()前台启动了一个活动, 调用该方法使前一个活动进入后台运行; 该方法中保存程序的持久性状态 (如正在 编辑的数据库记录);onStop

38、() 将一个不需要的活动置于停止状态;若内存不足时,系统不调用该方法,而是终止进程; onRestart()将已处于停止状态的活动重新显示给用户;onDestroy ()销毁活动前调用此方法; 若内存不足时, 系统不调用该方法, 而是终止进程;onSaveInstanceState (Bundle)让活动保存每个实例的状态(如光标位置);该方法无需重写,其自动保存所有用户界面控件的状态;onRestoreIntanceState(Bundle)重新初始化某个活动;使用 onSaveIntanceState() 方法保存的状态作为其参数;还原用户界面的状态;35. 模拟器( Emulator )

39、的特征支持 ARM5 处理器和相应的内存管理单元;支持一个 16 位的 LCD 显示屏;一个或多个键盘;具有音频输入输 出;通过磁盘镜像使用闪存;一个GSM 调制解调器,包括一个模拟的 SIM 卡;启动命令:emulator -avd36. 模拟器和真机的不同之处不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼叫(呼入和呼出)。不支持 USB 连接。不支持相机/视频捕捉。 不支持音频输入 (捕捉),但支持输出 (重放)。 不支持扩展耳机。不能确定连接状态。 不 能确定电池电量水平和交流充电状态。不能确定 SD 卡的插入/弹出。不支持蓝牙。37. 重要包的描述Android.app :提供高

40、层的程序模型、提供基本的运行环境 Android.content :包含各种的对设备上的数 据进行访问和发布的类 Android.database :通过内容提供者浏览和操作数据库 Android.graphics :底层 的图形库,可以将它们直接绘制到屏幕上 .Android.location :定位和相关服务的类 Android.media :提 供一些类管理多种音频、 视频的媒体接口A :提供帮助网络访问的类, 超过通常的 .* 接口 Android.os :提供了系统服务、消息传输、 IPC 机制 Android.opengl :提供 OpenGL 的工具 Avid

41、er :提供类访问 Android 的内容提供者 Android.telephony :提供与拨打电话相关的 API 交互 Android.view :提供基础的用户界面接口框架 Android.util :涉及工具性的方法,例如时间日期的 操作 Android.webkit :默认浏览器操作接口 Android.widget :各种 UI 元素(大部分可见 )在应用程序的屏幕中使用38. Android 的相关文件类型(1 )Java 文件应用程序源文件android 本身相当一部分都是用 java 编写而成; android 的应用使用 java 来开发。(2)Class 文件-Java

42、编译后的目标文件Google 使用 Dalvik 来运行应用程序; Android 的 class 文件是编译过程中的中间目标文件,需要链接成 dex 文件才能在 Dalvik 上运行。(3) Dex 文件-Android 平台上的可执行文件(4) Apk 文件-Android 上的安装文件:apk 文件将 AndroidManifest.xml 文件、应用程序代码(.dex 文 件) 、资源文件和其他文件打成一个压缩包。39. Android 应用程序的代码文件HelloAndroid.java( 活动类 );R.java( 资源索引类 );strings.xml( 声明系统中用到的字符串常

43、量 );降低耦 合行; 提高效率; main.xml( 布局文件 , 声明程序中用到的视图组件 );AndroidManifest.xml( 全局配置文件,声明用到的组件、权限、版本;40. 资源文件的使用R 类:编译 Android 应用时,自动生成 R 类;该类包含系统中使用的所有资源文件的标识;资源类:数组 array、属性 attr、颜色 color、图片 drawable、ID 标识 id、布局 layout、字符串 string ; 在代码中使用资源文件;在其他资源文件中引用资源文件;41. 颜色值的定义通过 RGB 三原色和一个 alpha (透明度)值定义;以#开始,后面是 A

44、lpha-Red-Green-Blue 格式;颜色的定义和使用颜色资源的位置”es/values/colors.xml颜色 XML 文件的格式声明 根元素 子元素:vcolor name= ” cname value获取颜色的方法Resources.getColor()引用资源的格式Java 代码中:R.color.color_nameXML 代 码中:package:color/color_name42. 用户界面的设计1. 选项菜单 Options Menu 活动的主菜单。通过按下设备菜单键来显示它。选项菜单包含两组菜单项:(1)图标菜单 Icon Menu 这个是当用户按下菜单键时最初出

45、现屏幕下方的item 集合。它支持最多 6 个菜单项。只有这些菜单支持图标而且这些菜单并不支持checkboxes 或者 radio buttons。( 2)扩展菜单 ExpandedMenu 这是通过按“更多”菜单显现出来的一个竖向的项目列表。它仅当图标菜单过多时存在而且是由6个以及其它选项菜单组成。2. 上下文菜单 Context Menu :浮动菜单列表,通常在你长时间按在一个视图上时出现(比如一个列表项)3. 子菜单 Submenu 浮动菜单列表,通过在选项菜单或上下文菜单选择菜单项显露出来。不支持嵌套子菜 单。43. 用户界面布局方式AbsoluteLayout- 绝对布局、Fram

46、eLayout-帧布局、 GridView-网格视图、LinearLayout- 线性布局、 ListLayout-列表布局、RadioGroup-单选组、TableLayout-表格布局、RelativeLayout-相对布局FrameLayout 帧布局:从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排序,后面的组件覆盖前 面的组件;所有子元素都钉到屏幕的左上角;不能为子元素指定位置TableLayout :子元素放入到行与列中;不显示行、列或是单元格边界线;单元格不能横跨行,如HTML 中一样AbsoluteLayout 绝对布局:指明子元素确切的屏幕(X,Y)坐标:(0,0)是左上

47、角,下移或右移时,坐标 值增加;允许元素重叠(但是不推荐)注意:一般建议不使用 AbsoluteLayout 除非你有很好的理由来使用 它;因为它相当严格并且在不同的设备显示中不能很好地工作;Android 2.0 API 文档中标示该类已过期,可以使用帧布局或者相对布局代替RelativeLayout相对布局:让子元素指定它们相对于其他元素的位置(通过 ID 来指定)或相对于父布局对象,跟 AbsoluteLayout 这个绝对坐标布局是个相反。44. 字体风格字体(4 种):BOLDBOLD_ITALIC ITALIC、NORMAL粗体、粗斜体、斜体、普通字体风格(5 种):DEFAULT

48、 DEFAULT_BOLDMONOSPACESANS_SERIF SERIF默认字体、默认粗体、单间隔字体、无衬线字体、衬线字体45. A ndroid 菜单android 提供了三种菜单类型,分另 U 为options menu , context menu , sub menu (子菜单)。options menu( 主菜单)就是通过按 home 键来显示,context menu( 右键菜单 ) 在 view 上按上 2s 后显示两种 menu 都有可以加入子菜单,子菜单中不能嵌套子菜单。Submenu(子菜单):一个浮动菜单列表,通过在选项菜单或上下文菜单选择菜单项显露出来。不支持嵌套

49、子菜单。1. 添 加 主 菜 单 : 第 一 步 : 定 义 字 符 串 资 源 resvaluesstrings.xml ; 第 二 步 : 定 义 菜 单 资 源resmenumenu.xml ;第 三 步 :在 Sudoku 类 中 创 建 菜 单 :导 入 以 下 菜 单 相 关 的 包 :import android.view.Menu;import android.view.MenuInflater; import android.view.MenuItem; 重 写 Sudoku 类 中 的 onCreateOptionsMenu( ) 第四 步 : 定 义 菜 单 点 击 事

50、件 , 选 择 settings 菜 单 , 调 用 onOptionItemSelected() 执行 Prefs 类。2. 添加设置:定义 Prefs 类,继承自 PreferenceActivity 类; addPreferencesFromResource() 方法从 XML 文件中读取设置定义,并将其解压缩至当前活动视图中;在 AndroidManifest.xml 文件中注册 Prefs 活动46. 进程优先级1前台进程(Active Process):前台 Activity 、包含正在运行的广播接收器、正在运行的服务可视进程(Visible Process) :包含一个可视化的

51、Activity 服务进程(Started Service Process):包含一个被开启的服务(处理服务,不是直接可视,例如媒体播放器,网络上传、下载)后台进程(BackgroundProcess) :包含一个不可视的 Activity( 可以在任意时刻杀死该进程来回收内存) 空进程 (EmptyProcess) :没有持有任何应用程序组件47. Activity状态及转换1active :当一个 Activity在屏幕的最上层时(对堆栈的最顶端),它就是属于 active 或者 running 的状态2paused :如果一个 Activity失去焦点(focus )但还看得到它的画面(

52、比如:一个新的Activity 画面并不是全屏幕或者它是一个半透明的情况),那失去焦点的 Activity 则处在 paused 的状态。3stop :如果一个 Activity被其它的 Activity完全的遮盖住时,它仍然保有全部的状态及数据,但因为它已不再被使用者看见, 所以它的画面是被隐藏起来的 (画面不需要更新) ,当系统内存不足时, 这种 stop 状态的Activity 时最先被系统考虑拿下来释放内存的。4finish :当一个 Activity 处于 pause 或 stop 的状态时,系统可以要求 Activity 结束( finish )或 直接移除( kill )它。当它

53、需要再度呈现在使用者面前时,它必须要能完整的重新启动及回复先前的状态。48. 服务的生命周期startService() :启动服务,直到调用 stoptService() ,或者 Service 调用 stopSelf() 停止。bindService():Service 和调用 bindService() 的进程同生共死,也就是说当调用 bindService() 的进程死了,那么它 bind 的 Service 跟着结束,期间可以调用 unbindService() 解除绑定让 Service 结束 两种方式混合使用。49.Intent 与 IntentFilterIntent 是描述应

54、用想要做什么, Intent 数据结构两个最重要的部分是:(1)动作:典型的动作类型有:MAIN(活动的门户)、VIEW PICK、EDIT 等。(2)动作对应的数据:以 URI 的形式进行表示。Android 使 用了 Intent 这个特殊类,实现在屏幕与屏幕之间移动。 Intent 类用于描述一个应用将会做什么事。intentfilter 则用于描述一个 activity (或者 IntentReceiver )能够操作哪些 intent 。一个 activity 如果要显示一个人的联系方式时,需要声明一个 IntentFilter ,这个 IntentFilter 要知 道怎么去处理

55、VIEW动作和表示一个人的URI。 IntentFilter 需要在 AndroidManifest.xml 中定义。50.IntentReceiverIntentReceiver 在 AndroidManifest.xml 中注册,也可在代码中使用 Context.registerReceiver() 进行 注册。当一个intentreceiver 被触发时,应用不必对请求调用 intentreceiver ,系统会在需要的时候启 动你的应用。 各种应用还可以通过使用 Context.broadcastIntent() 将自己的 intentreceiver 广播给其它 应用程序。51.Co

56、ntent ProviderContent provider 为 Android 应用程序提供数据共享机制。Android 本地 Content Provider 包括: CallLog :地址和接收到的电话信息; Contact.People.Phones : 存储电话号码; Setting.System :系统设置和偏好设置52. 设计用户界面的方法过程性设计:指用代码设计用户界面( Java 代码);声明性设计:不涉及任何代码(XML 描述符);53. 音频播放( 1)从源文件中播放:1)在项目的 res/raw 文件夹下放置一个 Android 支持的文件, 如 MP3;2)创建一 个

57、 MediaPlayer实例,可以使用 MediaPlayer 的静态方法 create() 来完成; 3)调用 start() 方法开始播放, 调用 pause() 暂停播放,调用 stop() 方法停止播放;如果要重复播放,在调用 start() 方法前,必须调用 reset() 方法和 prepare() 方法( 2)从文件系统中播放: 1)实例化一个 MediaPlayer ; 2)调用 setDataSource() 方法设置播放文件路径; 3)先调用 prepare(), 然后调用 start() 方法播放( 3 )从网络中播放:方法一 1)创建 URI 实例;2)根据一个 Med

58、iaPlayer 实例,使用 MediaPlayer 的静 态方法 create(),通过传递 URI 参数完成;3)调用 start() 方法开始播放方法二 1)实例化一个 MediaPlayer ; 2)调用 setDataSource() 方法设置想要播放文件的路径,网络上的可用路径;3)先调用 prepare() ,然后调用 start() 播放54. 访问内部文件系统和访问SD 卡( 1 ) Android 基于 Linux ,系统中也有一个真实的文件系统,包含根目录和其他各种文件目录;文件系统 的存储介质是设备的内置闪存;默认情况下, Android 应用程序只能访问私有目录下的文件 (data/data/ 包 名), 由于权限的限制,程序的进程不能破坏其他应用程序的数据; Context 类提供了文件访问的方法

温馨提示

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

评论

0/150

提交评论