Android 入门到精通 (界面编程#2-Menu)

      Android手机的菜单很美观大方,其编程实现起来也简洁明快,如果谁用过QT的界面编程,那么看一眼Android的Menu编程会马上会心微笑,
Option Menu:
看看下一段代码:
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class HelloActivity extends Activity { 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // TODO Auto-generated method stub
  super.onCreateOptionsMenu(menu);
  menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
  menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);
  menu.add(0, Menu.FIRST+3, 3, R.string.menu_update);
  menu.add(0, Menu.FIRST+4, 4, R.string.menu_close);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  super.onOptionsItemSelected(item);
  switch(item.getItemId())
  {
  case Menu.FIRST + 1:
  {
   this.setTitle("Open Text!");
   break;
  }
  case Menu.FIRST + 2:
  {
   this.setTitle("Edit Text!");
   break;
  }
  case Menu.FIRST + 3:
  {
   this.setTitle("Update Text!");
   break;
  }
  case Menu.FIRST + 4:
  {
   this.setTitle("Close Text!");
   break;
  }
  }
  return true;
 }

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);      
        this.setContentView(R.layout.main);  
    }
}

只需要改写父类Activity的两个函数即可,方便之极。也就是说Android早就为你写好了相关的代码,你只要填一些菜单项,再对每一个菜单项的ItemId编写具体的
操作代码就行了。
Android资源
上述代码中有几行可能对于入门者不好理解
1.添加菜单menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
              menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);代码中的 R.string.menu_open/menu_edit
这些其实是指资源文件中的ID,映射到具体的资源,这里是映射到字符串资源menu_open, menu_edit,其具体的值可以看res/values/string.xml在这里定义了字符串的值:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HelloActivity!</string>
    <string name="app_name">HelloWorld</string>
<string name="menu_open">Open</string>
<string name="menu_edit">Edit</string>
<string name="menu_update">Update</string>
<string name="menu_close">Close</string>
</resources>
在Android中,Activity显示的布局也可在资源中定义,并且以可视化的方式来操作布局对应的XML文件。可以看res/layout/main.xml这就是一个布局文件,这里指定了这个布局里有哪些界面元素以及如何组织,相对位置,绝对位置等信息。来看看其中内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="MyTest OK yest!"></TextView>

</LinearLayout>

这里就描述了布局为LinearLayout,包含了一个TextView,TextView的值为 MyTest.这个XML文件被编译后,可以使用R.layout.main的ID来从资源中取得。
于是Activity可以用setContentView(R.layout.main)来直接从资源取得布局,来绘制界面元素。
另一类常用资源就是图片
在res/drawable/下面有一些图片,你也可以新加一些图片到这里。然后就可以通过.R.drawable.xxx 的ID来从资源中取得对应的图片。

Context Menu:
上面是手机底部菜单,Android还提供了Context上下文菜单的操作,也相当简单,看如下代码:

posted @ 2009-07-22 16:51  岁月无声  阅读(3179)  评论(0编辑  收藏  举报