兄弟连云Android 学习笔记—菜单

来源:互联网 发布:我的世界进服务器java 编辑:程序博客网 时间:2024/06/02 09:54

菜单:

       1.Options menu and action bar 选项菜单

      2.Context menu   上下文菜单

      3.Popup menu    弹出式菜单

1.Options menu and action bar 选项菜单

创建选项菜单步骤:

1.覆盖Activity 的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用

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

3.当菜单项(MenuItem)被选择时,覆盖Activity的onOptionsItemSelected(MenuItem  item)来响应事件action bar         

***资源文件名必须全用小写,可以用下划线隔开,不能数字开头      

MainActivity.java

package com.example.hello;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import android.widget.Toast;public class MainActivity extends Activity {private static final int START_ITEM = Menu.FIRST;private static final int OVER_ITEM = Menu.FIRST + 1;private static final int SET_ITEM1 = Menu.FIRST + 2;private static final int SET_ITEM2 = Menu.FIRST + 3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//重写onCreateOptionsMenu方法@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.// getMenuInflater().inflate(R.menu.main, menu);// 添加菜单项(组id,菜单id,排序,标题)menu.add(0, START_ITEM, 100, "开始");menu.add(0, OVER_ITEM, 200, "结束");// 添加子菜单SubMenu sub1 = menu.addSubMenu("设置");sub1.add(1, SET_ITEM1, 300, "设置声音");sub1.add(1, SET_ITEM2, 300, "设置桌面");System.out.println("onCreateOptionsMenu...");return true;}// 重写onOptionItemSelected方法实现菜单选项事件@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubSystem.out.println("onOptionsItemSelected...");switch (item.getItemId()) {case START_ITEM:// R.id.start:// 弹框,提示信息Toast.makeText(this, "开始游戏", Toast.LENGTH_SHORT).show();break;case OVER_ITEM:// R.id.over:Toast.makeText(this, "结束游戏", Toast.LENGTH_SHORT).show();break;case SET_ITEM1:// R.id.over:Toast.makeText(this, "设置声音", Toast.LENGTH_SHORT).show();break;case SET_ITEM2:// R.id.over:Toast.makeText(this, "设置桌面", Toast.LENGTH_SHORT).show();break;default:break;}return super.onOptionsItemSelected(item);}}

2..Context menu   上下文菜单

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

2.覆盖Activity的onCreatetextItem Selected(Menu menu)来响应事件

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

mainActivity2.java

package com.example.hello;import android.app.Activity;import android.os.Bundle;import android.view.ContextMenu;import android.view.MenuItem;import android.view.View;import android.view.ContextMenu.ContextMenuInfo;import android.widget.Button;import android.widget.Toast;//上下文菜单public class MainActivity2 extends Activity {private Button btn1;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main2);// 获取BUTTON对象btn1 = (Button) findViewById(R.id.button1);//在button上注册上下文菜单registerForContextMenu(btn1);}// 创建上下文菜单的方法@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {// TODO Auto-generated method stubsuper.onCreateContextMenu(menu, v, menuInfo);getMenuInflater().inflate(R.menu.main2, menu);}// 上下文触发事件@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.start:Toast.makeText(this, "开始",Toast.LENGTH_SHORT).show();break;case R.id.over:Toast.makeText(this, "结束",Toast.LENGTH_SHORT).show();break;default:break;}return super.onContextItemSelected(item);}}
  3.Popup menu    弹出式菜单

弹出式菜单是在API 11级或更高级才有效

mainActivity3.java

package com.example.hello;import android.app.Activity;import android.os.Bundle;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.PopupMenu;import android.widget.Toast;public class mainActivity3 extends Activity implements android.widget.PopupMenu.OnMenuItemClickListener {private Button btn1;//弹出式菜单@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main3);}public void showPopupMenu(View v){//创建弹出式菜单对象PopupMenu popup = new PopupMenu(this,v);MenuInflater inflater = popup.getMenuInflater();inflater.inflate(R.menu.main3,popup.getMenu());//设置菜单项的单击事件popup.setOnMenuItemClickListener(this);popup.show();}@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()) {case R.id.copy:Toast.makeText(this, "复制", Toast.LENGTH_LONG).show();break;case R.id.del:Toast.makeText(this, "删除", Toast.LENGTH_LONG).show();break;default:break;}return false;}}

0 0
原创粉丝点击