乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第91页

书籍名:《Android从入门到精通》    作者:明日科技


break;



case  R.id.color4:  //当选择橙色时



tv.setTextColor(Color.rgb(255,  180,  0));



break;



default:



tv.setTextColor(Color.rgb(255,  255,  255));



}



return  true;



}

运行本实例,在文字“打开菜单…”上长时间按键不放时,将弹出上下文菜单,通过该菜单可以改变该文字的颜色,如图8.14所示。



图8.14 弹出的上下文菜单

8.9.4 范例2:创建带子菜单的选项菜单

例8.7   在Eclipse中创建Android项目,名称为8.7,实现一个带子菜单的选项菜单,其中子菜单为可以多选的菜单组。(实例位置:光盘\TM\sl\8\8.7)

(1)在res目录下创建一个menu目录,并在该目录中创建一个名称为optionmenu.xml的菜单资源文件,在该文件中定义3个菜单项,并在第2个菜单项中再定义一个多选菜单组的子菜单,具体代码如下:



















































说明:  在上面的代码中,加粗的代码用于创建一个子菜单,在该子菜单中添加一个多选菜单组。

(2)在Activity的onCreate()方法中,重写onCreateOptionsMenu()方法,在该方法中,首先创建一个用于解析菜单资源文件的MenuInflater对象,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析后的菜单保存在menu中,最后返回true,关键代码如下:

@Override



public  boolean  onCreateOptionsMenu(Menu  menu)  {



MenuInflater  inflater=new  MenuInflater(this);  //实例化一个MenuInflater对象



inflater.inflate(R.menu.optionmenu,  menu);  //解析菜单文件



return  true;



}

(3)重写onOptionsItemSelected()方法,在该方法中,首选判断是否选择了“参数设置”菜单项,如果选择了,改变菜单项的选中状态,然后获取除“参数设置”菜单项之外的菜单项的标题,并用消息提示框显示,最后返回真值,具体代码如下:

@Override



public  boolean  onOptionsItemSelected(MenuItem  item)  {



if(item.getGroupId()==R.id.setting){  //判断是否选择了“参数设置”菜单项



if(item.isChecked()){  //若菜单项已经被选中



item.setChecked(false);  //设置菜单项不被选中



}else{



item.setChecked(true);  //设置菜单项被选中



}



}



if(item.getItemId()!=R.id.item2){



//弹出消息提示框显示选择的菜单项的标题



Toast.makeText(MainActivity.this,  item.getTitle(),  Toast.LENGTH_SHORT).show();



}



return  true;



}

运行本实例,单击屏幕右上方的菜单按钮,将弹出选项菜单,如图8.15所示,选择“参数设置”菜单项,该菜单消失,然后显示对应的子菜单,该子菜单为多选菜单组,如果,选择“使用背景”菜单项,该菜单将消失,同时,该菜单项将被设置为选中状态。再次打开“参数设置”菜单组时,可以看到“使用背景”菜单项被选中,如图8.16所示。



图8.15 显示选项菜单



图8.16 被选中的子菜单项





8.10 Android程序国际化

教学录像:光盘\TM\lx\8\Android程序国际化.exe

国际化的英文单词是Internationalization,因为该单词较长,有时简称为I18N,其中,I是该单词的第一个字母;18表示中间省略的字母个数;N是该单词的最后一个字母。Android程序国际化,是指程序可以根据系统所使用的语言,将界面中的文字翻译成与之对应的语言。这样,可以让程序更加通用。Android可以通过资源文件非常方便地实现程序的国际化。下面将以国际字符串资源为例,介绍如何实现Android程序的国际化。

在编写Android项目时,通常都是将程序中要使用的字符串资源放置在res\values目录下的strings.xml文件中,为了实现这些字符串资源的国际化,可以在Android项目的res目录下创建对应于各个语言的资源文件夹(例如,为了让程序兼容简体中文、繁体中文和美式英文,可以分别创建名称为values-zh-rCN、values-zh-rTW和values-en-rUS的文件夹),然后在每个文件夹中创建一个对应的strings.xml文件,并在该文件中定义对应语言的字符串即可。这样,当程序运行时,就会自动根据操作系统所使用的语言来显示对应的字符串信息。

下面通过一个具体的实例来说明Android程序的国际化。

例8.8   在Eclipse中创建Android项目,名称为8.8,实现在不同语言的操作系统下显示不同的文字。(实例位置:光盘\TM\sl\8\8.8)

(1)打开新建项目的res\values目录,在默认创建的strings.xml文件中,将默认添加的字符串变量hello删除,然后添加一个名称为word的字符串变量,内容是“Nothing  is  impossible  to  a  willing  heart.”,修改后的strings.xml文件的具体代码如下: