一、一级菜单
代码
代码
在某个页面中点击menu按钮,添加几个菜单项,点击相应的菜单项,能执行相应的操作
java代码如下:
package com.event;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.TextView;
public class EventText1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
public void onClickButton(View view) {
//在这右键找onCreateOptionsMenu
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add("menu1");
menu.add("menu2");
return true;
}
//在这右键onOptionsItemSelected,这段代码是使得相应的菜单选项能够相应。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("menu1")){//字符串的等于
Log.v("you selected", item.getTitle().toString());
//在此添加相应的菜单,应该执行的操作
}
else if(item.getTitle().equals("menu2")){//字符串的等于
Log.v("you selected", item.getTitle().toString());
//在此添加相应的菜单,应该执行的操作
}
return super.onOptionsItemSelected(item);
}
}
上面的方法只适合在
onOptionsItemSelected里面直接用字符串进行比较,对于真机里面的,只能用字符串定义引用的方法来用字符串,如@String/...这种方法来用这个字符串,而不能直接引用的时候,
这种方法就不好使了,下面这种更好。
java代码代码package com.menu.test1;
import java.text.DateFormat;
import java.util.Date;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Toast;
//import android.os.IHardwareService;
public class MenuTest1 extends Activity {
/** Called when the activity is first created. */
private LinearLayout mLinearLayout;
private static final int WHITE_BRIGHT = Menu.FIRST;
private static final int GRAY_BRIGHT = WHITE_BRIGHT + 1;
private static final int BLACK_BRIGHT = GRAY_BRIGHT + 1;
private static final int WHITE_DIM = BLACK_BRIGHT + 1;
private static final int GRAY_DIM = WHITE_DIM + 1;
private static final int BLACK_DIM = GRAY_DIM + 1;
private String TAG = "MenuTest1";
// 颜色值定义,程序中并没有全部使用。
private int[] color = { R.drawable.white, R.drawable.gray,
R.drawable.black, R.drawable.blue, R.drawable.pink,
R.drawable.green, R.drawable.orange, R.drawable.yellow };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置全屏 requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags ( WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN );
//然后调用布局
setContentView(R.layout.main);
//设置屏幕的最初亮度
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0.3f;
getWindow().setAttributes(lp);
mLinearLayout = (LinearLayout) findViewById(R.id.myLinearLayout1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, WHITE_BRIGHT, 0,R.string.white_increase);
menu.add(0,GRAY_BRIGHT,1,R.string.gray_increase);
menu.add(0,BLACK_BRIGHT,2,R.string.black_increase);
menu.add(0,WHITE_DIM,3,R.string.white_decrease);
menu.add(0,GRAY_DIM,4,R.string.gray_decrease);
menu.add(0,BLACK_DIM,5,R.string.black_decrease);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.v(TAG, "options start...");
switch(item.getItemId()){
//下面不包括变亮和变暗的代码!
case WHITE_BRIGHT:
showMsg("白亮");
mLinearLayout.setBackgroundResource(color[0]);
break;
case GRAY_BRIGHT:
showMsg("灰亮");
mLinearLayout.setBackgroundResource(color[1]);
break;
case BLACK_BRIGHT:
showMsg("黑亮");
mLinearLayout.setBackgroundResource(color[2]);
break;
case WHITE_DIM:
showMsg("白暗");
mLinearLayout.setBackgroundResource(color[0]);
break;
case GRAY_DIM:
showMsg("灰暗");
mLinearLayout.setBackgroundResource(color[1]);
break;
case BLACK_DIM:
showMsg("黑暗");
mLinearLayout.setBackgroundResource(color[2]);
break;
}
return super.onOptionsItemSelected(item);
}
private void showMsg(String message) {
Toast msg = Toast.makeText(MenuTest1.this, message, Toast.LENGTH_LONG);
msg.show();
}
}string.xml
代码<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MenuTest1!</string>
<string name="app_name">MenuTest1</string>
<drawable name="green">#00FF00</drawable>
<drawable name="pink">#FF87EF</drawable>
<drawable name="blue">#00FFEA</drawable>
<drawable name="yellow">#FFFC00</drawable>
<drawable name="orange">#FFCF3B</drawable>
<drawable name="white">#FFFFFF</drawable>
<drawable name="gray">#333333</drawable>
<drawable name="black">#000001</drawable>
<string name="white_increase">白色变亮</string>
<string name="gray_increase">灰色变亮</string>
<string name="black_increase">黑色变亮</string>
<string name="white_decrease">白色变暗</string>
<string name="gray_decrease">灰色变暗</string>
<string name="black_decrease">黑色变暗</string>
</resources>
这样,就可以用 onOptionsItemSelected中就可以用menu.add()中的第二个参数,itemID做为判断的条件了。
java代码中,
原来的参数0,3变为1,0的时候,如下句:
menu.add(1,WHITE_DIM,0,R.string.white_decrease);
如图:
原来的参数0,3变为1,1的时候,如下句:
menu.add(1,WHITE_DIM,1,R.string.white_decrease);
如图:所以自己可以变动几个值,就知道第一个和第三个参数的位置关系了。
如果变成
menu.add(0, WHITE_BRIGHT, 0,R.string.white_increase);
menu.add(0,GRAY_BRIGHT,1,R.string.gray_increase);
menu.add(0,BLACK_BRIGHT,2,R.string.black_increase);
menu.add(1,WHITE_DIM,0,R.string.white_decrease);
menu.add(1,GRAY_DIM,1,R.string.gray_decrease);
menu.add(1,BLACK_DIM,2,R.string.black_decrease);
如下图:
当点击白色变亮的时候,就会出现提示,并且屏幕会变白,这里没有变亮的代码!
如图
所以,比较好的方法,就是在加菜单的时候,add的时候,用四个参数的方法来添加,这样下面点击这个菜单的时候,方便引用。。
二、二级菜单:
用submenu的方式实现一级菜单下面又有子菜单
(待续。。)
三、点击菜单能够出现对话框,有按钮,标题,(对本人来说,最重要的是带Checkbox)
3.1弹出复选框
1、java程序
代码package com.menu.test3;
//菜单弹出一个对话框(带Checkbox)。
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MenuTest3 extends Activity {
/** Called when the activity is first created. */
private LinearLayout mLinearLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.addSubMenu("屏幕背光");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MenuTest3.this)
.setTitle(getResources().getString(R.string.str_title))
// .setSingleChoiceItems(0, 0, listener1)
.setMultiChoiceItems(R.array.dialog,
new boolean[] { false, false },//这两个boolean值表示checkbox的初始状态是选中还是没有选中
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog,
int whichButton, boolean isChecked) {
// 点了Checkbox后的执行的东西
Toast.makeText(MenuTest3.this, "gg",
Toast.LENGTH_LONG).show();
}
})
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { // 点了确定之后执行的东西
Toast.makeText(MenuTest3.this, "ok",
Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { // 点了确定之后执行的东西
Toast.makeText(MenuTest3.this, "cancel",
Toast.LENGTH_LONG).show();
}
})
.show();
return super.onOptionsItemSelected(item);
}
}
main.xml
代码<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myLinearLayout1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
string.xml
代码运行结果图:<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, EX10_01</string>
<string name="app_name">EX10_01</string>
<string name="str_title">选择背光方式</string>
<array name="dialog">
<item>变亮</item>
<item>变暗</item>
</array>
</resources>
3.2弹出单选框:
java代码:
代码package com.ment.test5;
//点击menu,弹出单选框
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MenutTest5 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.addSubMenu("屏幕背光");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
final CharSequence[] items = {"turn_bright", "turn_dim"};
new AlertDialog.Builder(MenutTest5.this)
.setTitle(getResources().getString(R.string.str_title))
//单选
.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), items[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { // 点了确定之后执行的东西
Toast.makeText(MenutTest5.this, "ok",
Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { // 点了确定之后执行的东西
Toast.makeText(MenutTest5.this, "cancel",
Toast.LENGTH_LONG).show();
}
})
.show();
return super.onOptionsItemSelected(item);
}
}