iPhoneにはないAndroid特有のボタンです。
iPhoneだと、画面のどこかに設定ボタンとか作らないとダメですが、
Androidだと、このメニューボタンを実装すればいいので、わりと楽です。
メニューボタンの生成
@Override
public boolean onCreateOptionsMenu(Menu menu) {
}
Acticvityを継承していれば使えます。
このメソッドの中でメニューを作っていきます。
Menu.add(int, int, int, String);
groupid, 識別ID, ボタン配置優先順位, ボタン名
addした数だけ、メニューにボタンが配置されます。
レイアウトは勝手に作ってくれるので、わりと簡単で便利です。
■サンプルソース
package com.example.manifest;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
//どのボタンが押されたかの識別用ID
private final int Menu1 = Menu.FIRST;
private final int Menu2 = Menu.FIRST + 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//適当にレイアウトを作成
LinearLayout oLayout = new LinearLayout(this);
setContentView(oLayout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// メニューアイテムを追加します
menu.add(Menu.NONE, Menu1, Menu.NONE, "メニュー1").setIcon(R.drawable.ic_launcher);
menu.add(Menu.NONE, Menu2, Menu.NONE, "メニュー2");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Menu1:
Toast.makeText(getApplicationContext(), "Menu1", Toast.LENGTH_SHORT).show();
return true;
case Menu2:
Toast.makeText(getApplicationContext(), "Menu2", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
//メニューボタンを押される度に呼ばれる
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Log.d("メニュー","押された");
return true;
}
//メニューが消える度に呼ばれる
@Override
public void onOptionsMenuClosed (Menu menu) {
super.onPrepareOptionsMenu(menu);
Log.d("メニュー","閉じられた");
}
}
■実行結果
メニュー画面が開くタイミングや閉じるタイミングのOverrideが既にあるのが、とても便利です。
また、サンプルソースで使っている定数ですが、
Menu.NONEが0
Menu.FIRSTが1
です。
0 件のコメント:
コメントを投稿