編輯:關於Android編程
1.重寫Activity的onCreateOptionsMenu(Menu menu)方法,在該方法裡調用Menu對象的方法來添加菜單項或子菜單。
2.如果希望應用程序能響應菜單項的單擊事件,重寫Activity中的onOptionsItemSelected(MenuItem item)方法即可。
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//Options菜單
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//通過Activity得到填充Menu的填充器
getMenuInflater().inflate(R.menu.main, menu);
/**給Option添加item
* 參數1:分組的ID
* 參數2:該item的ID
* 參數3:添加順序,從0開始
* 參數4:item顯示的文本*/
menu.add(Menu.NONE, 1, 0, 0);
menu.add(Menu.NONE, 2, 2, 2);
menu.add(Menu.NONE, 4, 5, 5);
SubMenu subMenu = menu.addSubMenu(我還能點);
subMenu.add(Menu.NONE, 3, 6, 我是一個子選項);
//返回true顯示菜單,返回false隱藏菜單
return true;
}
//給Option添加事件監聽
@Override
public boolean onOptionsItemSelected(MenuItem item) {//按下menu鍵觸發該方法
switch (item.getItemId()) {
case R.id.d:
Toast.makeText(this, d, 0).show();
break;
case R.id.dmxy:
Toast.makeText(this, dmxy, 0).show();
break;
case R.id.dom:
Toast.makeText(this, dom, 0).show();
break;
case 2:
Toast.makeText(this, 2, 0).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
根節點必須為menu才能夠正確的解析。上述可以看出來,order是指添加完事,放在哪個位置的一個排序:不寫默認是第一個(兩個都不寫按照XML先後順序),XML和Java代碼中順序相同則先加載XML的。其余的按照升序排序。
效果圖:

1.重寫Activity的onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法
2.調用Activity的registerForContextMenu(View view)方法給view組件注冊上下文菜單。
3.如果系統事件能為菜單項提供響應,可以重寫onContextItemSelected(MenuItem item)方法,或為指定菜單項綁定事件監聽器。
MainActivity.java
public class MainActivity extends Activity {
private Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.btn);
registerForContextMenu(b);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, 1, 1, 紅色);
menu.add(Menu.NONE, 2, 2, 藍色);
menu.add(Menu.NONE, 3, 3, 綠色);
menu.add(Menu.NONE, 4, 4, 紫色);
//給這四個菜單項設置為單選的
menu.setGroupCheckable(0, true, true);
//設置上下文的標題和圖標
menu.setHeaderIcon(R.drawable.ic_launcher);
menu.setHeaderTitle(選擇背景色);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
return super.onContextItemSelected(item);
}
}
上下文菜單需要長按才能夠觸發。
效果圖:

1.調用new PopupMenu(Context context, View anchor)創建下拉菜單,android代表要激活該組件彈出菜單的組件。
2.調用PopupMenu的inflate()方法顯示彈出式菜單
3.調用PopupMenu的show()方法顯示彈出式菜單
MainActivity.java
public class MainActivity extends Activity {
private Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.btn);
}
public void btn(View view) {
// 創建PopupMenu對象
PopupMenu menu = new PopupMenu(this, b);
// 將菜單的XML資源文件加載到popup菜單中
getMenuInflater().inflate(R.menu.popup_menu, menu.getMenu());
// 添加事件監聽
menu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.add:
Toast.makeText(MainActivity.this, 添加, 0).show();
break;
case R.id.del:
Toast.makeText(MainActivity.this, 刪除, 0).show();
break;
}
return false;
}
});
menu.show();
}
}
popup_menu.xml
彈出式菜單單擊即可。

總結:
1.選項菜單order是由數值來決定的,越小越靠前,不給定數值在最前面。手機按鍵menu和右上角都可以打開選項菜單
2.上下文菜單需要長按才能夠觸發
3.彈出式菜單需要單擊即可觸發
前兩者都在Activity中重寫方法實現的,後者是需要Context參數即可實現。
OPENGL---Ps 徑向模糊算法(glsl)
功能本人之前也介紹過,但是這裡轉載,是因為這個版本是Opengl實現的,大家可以看一下,也可以順便學習一下Opengl。Opengl 實現徑向模糊,可用於實現放射性效果:
Android中popWindow彈出菜單的編寫
1、什麼是popWindow? popWindow就是對話框的一種方式!此文講解的android中對話框的一種使用方式,它叫popWindow。 2、popWindow的
android繪制圓形圖片的兩種方式示例
android繪制圓形圖片的兩種方式看下效果先下面有完整的示例代碼使用BitmapShader(著色器)我們在繪制view 的時候 就是小學上美術課 用水彩筆在本子上畫畫
Android 操作系統獲取Root權限 原理詳細解析
android root權限破解分析許多機友新購來的Android機器沒有破解過Root權限,無法使用一些需要高權限的軟件,以及進行一些高權限的操作,其實破解手機Root