



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android的国际化与本地化internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n。 一般说明一个地区的语言时,用 语言_地区的形式,如 zh_CN, zh_TW.各国语言缩写 /standards/iso639-2/php/code_list.php国家和地区简写 /iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.htmlandroid 对i18n和L10n提供了非常好的支持。android没有专门的API来提供国际化,而是通过对不同resource的命名来达到国际化,同时这种命名方法还可用于对硬件的区分,如不同的新视屏用不同的图片。 在eclipse的工程中,res目录有默认几项resource,如 drawable, layout,menu,values其余还有res/anim/ 用来放置动画res/xml/ 用来放置style theme等xml定义。res/raw/ 用来放置data数据 我们引用这些resource时候,在java代码中是通过R.resource_type.resource_name的方式来使用,如setTitle(R.string.main_title);还有一种是在xml中直接引用,如 引用了名字为hello的字符串。当程序运行时,通过Resource类会装载strings.xml中名字为hello的字符串。但Resource类装载strings.xml时会根据当前手机的设置来选择装载哪一个xml文件。这些手机设置有MCC and MNC, Language and region, Screen dimensions, Wider/taller screens, Screen orientation,Screen pixel density, Touchscreen type, SDK version,也就是说通过手机当前语言区域,屏幕的大小,屏幕像素,以及当前android sdk的版本号来选择。通过把strings.xml放置在以这些选项命名的文件夹下,Resource类就能正确的装载所需的字符串。 我们以不同的local和region来做一次国际化,首先values表示默认的字符串,也即当Resource找不到匹配的资源时,默认使用values文件夹下的资源,其余 drawable等资源也是同样的。 当命名这些文件夹的名字时,不同的选项用-分开,而且次序必须和 andorid 文档中table /guide/topics/resources/resources-i18n.html#AlternateResources文件夹的命名必须都是小写字符,否则在一些大小敏感的文件系统中可能会出错,如果你用大写,eclipse的adt都会自动报错。小写字母r表示region的意思。 上图命名了中文简体和繁体以及默认选项,在strings.xml中除了字符串本身不一样,xml中定义该字符串的名字,id都是一样的。所以在代码或者xml中引用该资源时,只要引用名字即可或者id即可,程序启动时候Resource类回到相应的目录下去寻找正确的字符串(资源) 通过在Settings中设置locale& Text 我们可以让Resource类来选择相应文件夹下的内容,选择英语时候结果如下,也即选择了 values下的strings.xml选择 chinese(china)时,也即选了 values-zh-rcn目录下的strings.xml选择 chinese(taiwan)时,也即选了 values-zh-rtw目录下的strings.xml 其余手机的选项,像屏幕的像素等都可以建立相应得目录。Android常用控件的信息!单选框(RadioButton与RadioGroup):RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。事件:setOnCheckedChangeListener(),处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener实例作为参数传入。多选框(CheckBox):每个多选框都是独立的,可以通过迭代所有的多选框,然后根据其状态是否被选中在获取其值。事件:setOnCheckChangeListener()处理多选框被选择事件。把CompoundButton.OnCheckedChangeListener实例作为参数传入下拉列表框(Spring):Spinner.getItemAtPosition(Spinner.getSelectedItemPosition();获取下拉列表框的值。事件:setOnItemSelectedListener(),处理下拉列表框被选择事件把AdapterView.OnItemSelectedListener实例作为参数传入;拖动条(SeekBar):SeekBar.getProgress()获取拖动条当前值事件:setOnSeekBarChangeListener(),处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入。菜单(Menu):重写Activity的onCreatOptionMenu(Menu menu)方法,该方法用于创建选项菜单,咋用户按下手机的Menu按钮时就会显示创建好的菜单,在onCreatOptionMenu(Menu Menu)方法内部可以调用Menu.add()方法实现菜单的添加。重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件。进度对话框(ProgressDialog):创建并显示一个进度对话框:ProgressDialog.show(ProgressDialogActivity.this,请稍等,数据正在加载中.,true);设置对话框的风格:setProgressStyle()ProgressDialog.STYLE_SPINNER 旋转进度条风格(为默认风格)ProgressDialog.STYLE_HORIZONTAL 横向进度条风格Android系统的架构!android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。1.应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。2.应用程序框架开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括;* 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。* 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据* 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。* 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。* 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。有关更多的细节和怎样从头写一个应用程序,请参考 如何编写一个 Android 应用程序.3.系统运行库1)程序库Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:* 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。* 媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。* Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。* LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。* SGL - 底层的2D图形引擎* 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。* FreeType -位图(bitmap)和矢量(vector)字体显示。* SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。2)Android 运行库Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 “dx” 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。4.Linux 内核Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。开机自动运行程序!Android实现开机自动运行程序2009-12-31 15:01:17.0 开机 自动 运行 程序 有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Dont call me, Ill call you back!”总结Android框架,真是说到点子上了。理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解。使用场景:手机开机后,自动运行程序,在屏幕上显示Hello. I started!字样。背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为ent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,Android框架说:Dont call me, Ill call you back。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个BroadcastReceiver。代码解析:1、界面Activity:SayHello.javapackage com.ghstudio.BootStartDemo;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class SayHello extends Activity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText(Hello. I started!);setContentView(tv);这段代码很简单,当Activity启动时,创建一个TextView,用它显示Hello. I started!字样。2、接收广播消息:BootBroadcastReceiver.javapackage com.ghstudio.BootStartDemo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class BootBroadcastReceiver extends BroadcastReceiver static final String ACTION = ent.action.BOOT_COMPLETED;Overridepublic void onReceive(Context context, Intent intent) if (intent.getAction().equals(ACTION)Intent sayHelloInt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤矿定量合同范本
- 医院分成协议合同范本
- 征地拆迁合同范本
- 供货渠道合同范本
- 新余小升初房屋合同范本
- 大牌代工合同范本
- 门窗员工安全合同范本
- 车位充电租赁合同范本
- cfg桩施工合同范本
- 代付协议合同范本
- 老旧小区综合整治项目成品保护和工程保修的管理措施
- 西安26中小升初分班考试语文真题
- 2024年深圳技能大赛-电工职业技能竞赛理论考试题库-上(单选题)
- 机关食堂从业人员培训
- 高中英语考纲3500词之核心词汇讲与练
- 2024光伏并网柜技术规范
- 品质异常检讨
- 《应用光伏学》课程教学大纲(新能源材料与器件专业)
- 劳动仲裁申请书模板2
- GB/T 24633.1-2024产品几何技术规范(GPS)圆柱度第1部分:词汇和参数
- 护理工作中的人文关怀
评论
0/150
提交评论