现在的位置: 首页 > 综合 > 正文

Android开发学习日志(四)

2012年11月15日 ⁄ 综合 ⁄ 共 2152字 ⁄ 字号 评论关闭

  接上一篇,我们就来优化一下上一篇中的计算器。我们回过头来看看我们已经实现的App,和一个成熟的App相比我们缺少了什么。最基本就应该是菜单了吧,下面就说一下菜单。

  之前我们讲过,在MainActivity中我们重写了两个方法,onCreate和onCreateOptionsMenu,onCreateOptionsMenu就是创建菜单的方法。和控件一样,菜单的创建也有使用xml的描述语言(布局文件)和用java代码创建两种方法,我们看到自动生成的onCreateOptionsMenu方法有这样一句:getMenuInflater().inflate(R.menu.activity_main, menu);这个就是把布局文件中定义的菜单加载到当前Activity的菜单实例中。既然知道了是布局文件来定义菜单的,那么我们就打开/Calculator/res/menu/activity_main.xml这个菜单布局文件来看看。里面应该仅有下面的代码:

1 <menu xmlns:android="http://schemas.android.com/apk/res/android">
2     <item android:id="@+id/menu_settings"
3         android:title="@string/menu_settings"
4         android:orderInCategory="100"
5         android:showAsAction="never" />
6 </menu>

当然,我们运行我们的程序的时候按menu键,菜单也应该只有一个setting项,点击之后没有任何反应,因为我们还没有为菜单添加事件监听处理程序。

下面我们修改一下菜单,我们把setting项改为About,用来显示应用的相关信息,再添加一个退出的菜单,并且为菜单添加事件监听。

 

1 <menu xmlns:android="http://schemas.android.com/apk/res/android">
2     <item android:id="@+id/menu_about"
3         android:title="@string/menu_about"
4         android:orderInCategory="100"
5         android:showAsAction="never" />
6     <item android:id="@+id/menu_exit" android:orderInCategory="101" android:title="@string/menu_exit" android:showAsAction="never"></item>
7 </menu>

 

这里说一句:菜单基本上分为三类,选项菜单(optinosMenu),上下文菜单(ContextMenu),子菜单(subMenu),选项菜单就是我们按了menu键之后出现的菜单,也就是上面我们正在添加的菜单,选项菜单是以Activity为单位的,所以我们添加选项菜单的处理程序非常简单,只需要重写Activity中的onOptionsItemSelected方法就可以了。顾名思义,该方法就是当菜单被点击时调用的方法。其参数是被点击菜单项的实例。

 1     @Override
 2     public boolean onOptionsItemSelected(MenuItem item) {
 3         // 貌似没什么用,现在可加可不加, 不过不能保证以后google不会扩展基类中的代码
 4         super.onOptionsItemSelected(item);
 5 
 6         switch (item.getItemId()) {
 7         case R.id.menu_about:
 8             this.createAlertDialog();
 9             break;
10 
11         case R.id.menu_exit:
12             finish();
13             break;
14         }
15 
16         return false;
17     }
18 
19     /**
20      * 创建About对话框
21      */
22     private void createAlertDialog() {
23         Dialog aboutDialog = new AlertDialog.Builder(this).setTitle("About")
24                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
25                     public void onClick(DialogInterface dialog, int which) {
26                         dialog.cancel();
27                     }
28                 }).setMessage("Calculator V1.0\r\nAuthor: Null Pointer\r\nInstruction: ......").create();
29         aboutDialog.show();
30     }

 

 显示About信息这里使用了AlertDialog,顾名思义就是弹窗,使用安卓系统的朋友应该是经常见到的。

当我们点击文本框时,系统的输入法还是会弹出来,用户体验不是很好,我们把输入法屏蔽。其实就是EditText的属性,加上这句就行了:inputText.setInputType(InputType.TYPE_NULL);

结束。

抱歉!评论已关闭.