您的位置:首页 > 移动开发 > Android开发

Android开发学习日志(四)

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

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

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


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

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

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


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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 貌似没什么用,现在可加可不加, 不过不能保证以后google不会扩展基类中的代码
super.onOptionsItemSelected(item);

switch (item.getItemId()) {
case R.id.menu_about:
this.createAlertDialog();
break;

case R.id.menu_exit:
finish();
break;
}

return false;
}

/**
* 创建About对话框
*/
private void createAlertDialog() {
Dialog aboutDialog = new AlertDialog.Builder(this).setTitle("About")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).setMessage("Calculator V1.0\r\nAuthor: Null Pointer\r\nInstruction: ......").create();
aboutDialog.show();
}


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



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

结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: