SSブログ

Androidプログラミングの基礎[8] メニュー [Android]

今回のテーマは「メニューとノーティフィケーション」です。

第8回: メニューとノーティフィケーション

1.オプションメニューを作る

Androidで頻繁に利用されるユーザーインターフェイスの1つに「オプションメニュー」がありまう。「MENU」ボタンを押すことで表示されます。

オプションメニューは最大6つまで表示され、7つ以上になると6つ目が「その他」となります。

◎ メニュー関連のクラス・インターフェイス

オプションメニュー、コンテキストメニューはともに、Menuインターフェイス(android.view.Menu)により管理されている。

⇒ オプションメニュー関連のイベント

「MENU」ボタンが押されるとActivityクラスのコールバックメソッドが呼ばれる。

メソッド 解説
boolean onCreateOptionsMenu 「MENU」ボタンが押されたときに呼ばれる
boolean onPrepareOptionMenu オプションメニューが表示される直前に呼ばれる
boolean onOptionMenuItemSelected オプションメニューの項目がタップされたときに呼ばれる

⇒ オプションメニュー用のXMLファイル

オプションメニュー用のXMLファイルは、プロジェクト作成時「res/menu」フォルダ内に作成されています。ファイル名はレイアウトXMLファイルと同じとなっている。

◎ サンプル

プロジェクト設定

・新規Androidアプリケーション

アプリケーション名 MenuSample
プロジェクト名 MenuSample
パッケージ名 jp.andsys.android.menusample
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 MenuSampleActivity
レイアウト名 main
ナビゲーション・タイプ None

menu_sample.xml の編集(メニュー用XMLファイル)

”MenuSample/res/menu/menu_sample.xml”

image

MenuSampleActivity.java の編集

”MenuSample/src/jp/andsys/android/menusample/MenuSampleActivity”

image

image

⇒ オプションメニューの初期化

onCreateOptionsMenu メソッド

機能 「メニュー」ボタンが押されたときに呼ばれるコールバックメソッド
書式 boolean onCreateOptionsMenu ( Menu menu )
引数 menu : 作成するオプションメニュー

inflate メソッド

機能 メニューXMLファイルからメニューを構築する
書式 void inflate ( int menuRes, Menu menu )
引数 menuRes : メニューXMLファイル名
menu : 項目を追加する対象

⇒ オプションメニューに対する操作

onPrepareOptionsMenu メソッド

機能 メニューが表示される直前に呼ばれるコールバックメソッド
書式 boolean onPrepareOptionsMenu ( Menu menu )
引数 menu : 操作項目を操作する対象

findItem メソッド

機能 指定したリソースIDのメニュー項目を取得する
書式 MenuItem findItem ( int id )
引数 id : メニュー項目のリソースID

setEnabled メソッド

機能 メニュー項目の有効/無効を指定する
書式 MenuItem setEnabled ( boolean enabled )
引数 enabled : 有効の場合true、無効の場合false

⇒ オプションメニューが選択された時の処理

onOptionsItemSelected メソッド

機能 メニュー項目をタップした時に呼ばれるコールバックメソッド
書式 boolean onOptionsItemSelected ( MenuItem item )
引数 item : タップされたメニュー項目

⇒ 実行

「MENU」ボタンを押すとメヌーが表示されます。

image

また各項目を押すと押した項目がトーストにって表示されます。

 

2.コンテキストメニューを作る

コンテキストメニューは状況に応じて表示するメニューで、画面の長押しでポップアップされます。

◎ コンテキストメニュー関連のクラス・インターフェイス

コンテキストメニューの操作は、ContextMenuインターフェイス(android.view.ContextMenu)で行います。

⇒ コンテキストメニュー関連のイベント

ビューが長押しされると、以下のようなActivityクラスのコールバックメソッドが呼ばれる。

メソッド 解説
void inCreateContextMenu ビューが長押しされたときに呼ばれる
boolean onContextMenuItemSelected コンテキストメニューの項目がタップされたときに呼ばれる

◎ サンプル

main.xml の編集

”MenuSample/res/layout/main.xml”

image

コンテキストメニュー用のレイアウトXMLを追加する。

Eclipseメニューから「ファイル」、「新規」、「その他」を実行し「Android」「AndroidXMLファイル」を選択する。

設定は以下の内容とする。

設定項目 入力値/選択項目
リソース・タイプ Menu
プロジェクト MenuSample
ファイル context_menu
ルート要素 menu

context_menu.xml の編集

”MenuSample/res/menu/context_menu.xml”

image

MenuSampleActivity.java の編集

”MenuSample/src/jp/andsys/android/menusample/MenuSampleActivity”

image

image

image

⇒ コンテキストメニューの作成

onCreateContextMenu メソッド

機能 ビューが長押しされたときに呼ばれるコールバックメソッド
書式 void onCreateContextMenu ( ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo )
引数 menu : 項目を作成するコンテキストメニュー
v : 長押しされたビュー
menuInfo : コンテキストメニューの作成に関する追加情報

⇒ コンテキストメニューが選択された時の処理

onContextItemSelected メソッド

機能 コンテキストメニューの項目がタップされたときに呼ばれるコールバックメソッド
書式 boolean onContextItemSelected ( MenuItem item )
引数 item : 選択された

setText メソッド

機能 引数で渡した文字列をクリップボードへ格納する
書式 void setText ( CharSequence text )
引数 text : クリップボードに格納する文字列

getText メソッド

機能 クリップボードに格納されている文字列を取得
書式 CharSequence getText ()
引数  

⇒ 実行

テキストボックスを長押しするとメニューが現れます。このメニューから文字列の操作(編集、文字列の選択等)を行います。

image

次に選択された文字列を長押しするとカット&ペーストメニューが現れます。

image

カット&ペーストした文字列は上部のラベルエリアに張り付けることも可能です。

image

 

3.ノーティフィケーション

ノーティフィケーションとは、システムのステータスバーを開いた領域にアイコンとメッセージで通知を行うインターフェースのこと。

◎ ノーティフィケーションに関連するクラス

表示手順

  1. Notificationクラスのインスタンスを生成
  2. ノーティフィケーションをタッチした時にアクティビティを起動するためのインテントを準備
  3. インテントを元に、PendingIntentクラスのインスタンスを生成
  4. ノーティフィケーションにPendingIntentをセット
  5. NotificationManagerにノーティフィケーションを登録

⇒ Notificationクラス

Notification クラスのコンストラクタで基本設定を定義する。

書式 Notification ( int icon, CharSequence tickerText, long when )
引数 icon : ノーティフィケーションを受信した時にステータスバーに表示されるアイコンのリソースID
tickerText : ノーティフィケーションを受信したときにステータスバーに表示されるテキスト
when : ノーティフィケーションに表示する時刻

⇒ PendingIntentクラス

PendingIntentクラス(android.app.PendingIntent)は、ノーティフィケーションがタップされたタイミングでインテントを送信します。

⇒ NotificationManager

NotificationManagerクラス (android.app.NotificationManager)は、Notificationオブジェクトを登録し、notifyメソッドでステータスバーに表示する。

◎ サンプル

プロジェクト設定

・新規Androidアプリケーション

アプリケーション名 NotificationSample
プロジェクト名 NotificationSample
パッケージ名 jp.andsys.android.notificationsample
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 NotificationSampleActivity
レイアウト名 main
ナビゲーション・タイプ None

main.xml の編集(メニュー用XMLファイル)

”NotificationSample/res/layout/main.xml”

image

NotificationSampleActivity.java の編集

”NotificationSample/src/jp/andsys/android/notificationsample/NotificationSampleActivity”

image

getActivity メソッド

機能 PendingIntentインテントを登録する
書式 PendingIntent getActivity ( Context context, int requestCode, Intent intent, int flags )
引数 context : コンテキスト
requestCode : 使われていない「0」を渡す
intent : 登録するインテント
flags : 実際の送信が発生したときに渡すフラグ

setLatestEventInfo メソッド

機能 ノーティフィケーションのイベント情報を設定する
書式 void setLatestEventInfo ( Context context, CharSequence Title, CharSequence Text, Pending Intent )
引数 context : 自身(this)を渡す
Title : タイトル
Text : 表示するメッセージ
Intent : PendingIntentのインスタンス

notify メソッド

機能 ノーティフィケーションの表示
書式 void notify ( int id, Notificaton notification )
引数 id : ノーティフィケーションID
notification : Notificationのインスタンス

⇒ 実行

image

◎ その他の通知オプション

サウンド再生、バイブレーション、通知LEDランプ点灯、数値バッジの表示機能を追加する。

NotificationSampleActivity.java の編集

”NotificationSample/src/jp/andsys/android/notificationsample/NotificationSampleActivity”

image

Androidのデフォルト設定を使用する場合は、defaultフィールドを使用する。

⇒ 通知音

notification.defaults |= Notification.DEFAULT_SOUND;

⇒ バイブレーション

notification.defaults |= Notification.DEFAULT_VIBRATE;

⇒ 通知LED

notification.defaults |= Notification.DEFAULT_LIGHTS;

⇒ 数値アイコン表示

notification.number = 1;

実行

image

以上で「メニューとノーティフィケーション」を終了します。

 

本記事は以下の参考書を元にしています。


nice!(0)  コメント(0)  トラックバック(1) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。