您的位置:首页 > 产品设计 > UI/UE

Android学习:用户界面UI之菜单(Menu)

2013-05-25 22:30 363 查看
Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础之上。View的子类被称为“Widget”,ViewGroup的子类被称为“Layout”。任何视图组件的创建方式都有两种,一种通过在布局文件中声明创建,一种通过在代码中创建。

菜单

Android中的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)。在代码中通过MenuInflater类使用。

菜单资源文件也是一个XML文件,该菜单文件位于工程的res\menu\目录下。通过R.menu.menu's name方式引用。典型的菜单资源文件的结构是这样的:<menu>根元素,在<menu>根元素里面会套嵌<item>和<group>子元素,<item>元素中也可以套嵌<menu>形成子元素。

选项菜单(Option Menu)

当用户单击设备上的菜单按钮时,弹出的就是选项菜单。选项菜单最多只有6个,超过6个自动显示“更多”选项来显示。

创建一个选项菜单需要如下步骤:

1、覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当我们第一次打开菜单时该方法被自动调用。

2、调用Menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单项设置图标。

3、当菜单项(MenuItem)被选择时,覆盖Activity的onOptionsItemSelected()方法来响应事件。

package com.jwt.chp04;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;

public class OptionsMenuActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_optionsmenu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// int groupID,int itemID,int order,string title
menu.add(0, Menu.FIRST, 0, "Start");
menu.add(0, Menu.FIRST + 1, 0, "Pull");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Menu.FIRST:
setTitle("You select Start button");
break;
case Menu.FIRST + 1:
setTitle("You select Pull button");
break;
}
return true;
}
}


上下文菜单(Context Menu)

当用户上时间按键不放,弹出的菜单称为上下文菜单。如在windows中用鼠标右键点击弹出的菜单也就是上下文菜单。

在程序中创建一个上下文菜单需要如下步骤:

1、覆盖Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项(MenuItem)。

2、覆盖onContextItemSelected(),响应菜单单击事件。

3、调用registerForContextMenu()方法,为视图注册上下文菜单。

package com.jwt.chp04;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

public class ContextMenuActivity extends Activity {

private TextView lbl;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contextmenu);

lbl = (TextView) findViewById(R.id.lbl_CMA);
registerForContextMenu(lbl);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.context_menu, menu);
return true;
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// int groupID,int itemID,int order,string title
menu.add(0, Menu.FIRST, 0, "Set Green Background");
menu.add(0, Menu.FIRST + 1, 0, "Set Red Background");
menu.add(0, Menu.FIRST + 2, 0, "Set Blue Background");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Menu.FIRST:
lbl.setBackgroundColor(Color.GREEN);
break;
case Menu.FIRST + 1:
lbl.setBackgroundColor(Color.RED);
break;
case Menu.FIRST + 2:
lbl.setBackgroundColor(Color.BLUE);
break;
}
return true;
}

}


子菜单(Sub Menu)

子菜单就是将相同功能的分组进行多级显示的一种菜单。如windows的“文件”菜单中又有“新建”、“打开”、“关闭”等子菜单。

在程序中创建子菜单需要如下步骤:

1、覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项(Sub Menu)。

2、调用SubMenu的add()方法,添加子菜单(Sub Menu)。

3、覆盖onOptionsItemSelected()方法,响应菜单单击事件。

package com.jwt.chp04;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;

public class SubMenuActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_submenu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu smFile = menu.addSubMenu("File");
smFile.add(1, Menu.FIRST + 1, 0, "Java Project");
smFile.add(1, Menu.FIRST + 2, 0, "Android Project");
menu.add(0, Menu.FIRST, 0, "Help");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case Menu.FIRST:
setTitle("You select Help Button");
break;
case Menu.FIRST + 1:
setTitle("You select Button to Create Java Project");
break;
case Menu.FIRST + 2:
setTitle("You select Button to Create Android Project");
break;
}
return true;
}

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