Presentation is loading. Please wait.

Presentation is loading. Please wait.

選單.

Similar presentations


Presentation on theme: "選單."— Presentation transcript:

1 選單

2 簡介 本單元探討android手機中的「標準選單(Option Menu)」以及「長按型選單(Context Menu)」

3 Option Menu 每個Android手機的大多配置有四個硬體按鍵,其中有個名為「Menu」的按鍵,用以顯示一個android應用程式的「額外選單」,使用者可以藉由「點選」選單上的選項(item)進行功能/設定

4 Context Menu 「長按型選單」就是一般所見的「快顯功能表」,由使用者長按住「主畫面」或是特定物件而啟動選單

5 Option menu的template protected static final int MENU_ABOUT = Menu.FIRST; protected static final int MENU_QUIT = Menu.FIRST+1; public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_ABOUT, 0, "關於..."); menu.add(0, MENU_QUIT, 0, "結束"); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case MENU_ABOUT: break; case MENU_QUIT: return super.onOptionsItemSelected(item);

6 Menu 與 MenuItem 當建立一個option menu時,必須事先定義要置放於menu的選項(item)物件(i.e. menuitem)的識別標籤,再透過.add()方法,將選單選項「加入」選單中 由於各個選項已經配置有「識別符號」,因此當使用者點選「選項」時,可以透過switch語法

7 步驟 建立「選單程式碼樣板」 定義選項標籤 撰寫onCreateOptionMenu(Menu menu)
import android.view.Menu; (自動新增) import android.view.MenuItem; (自動新增) 定義選項標籤 撰寫onCreateOptionMenu(Menu menu) Menu.add(): 加入所定義的選項 撰寫核選選項後的動作onOptionsItemSelected(MenuItem item) 搭配switch()語法

8 建立樣板 在程式碼編輯區案滑鼠「右鍵」,啟動快顯功能表
「Source」 -> 「Override/Implement Methods」 核選「onCreateOptionsMenu」、「onOptionsItemSelected」

9 定義選項識別符號 protected static final int MENU_ABOUT = Menu.FIRST;
protected static final int MENU_QUIT = Menu.FIRST+1; protected static final int 「選項識別符號」 = Menu.FIRST+ n; //定義n+1個選單選項

10 onCreateOptionMenu(Menu menu)
public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, MENU_ABOUT, 0, "關於..."); menu.add(0, MENU_QUIT, 0, "結束"); return super.onCreateOptionsMenu(menu); }

11 Menu.add() 在onCreateOptionMenu(Menu menu)中,利用menu物件呼叫add()方法用以加入選單選項
add(int groupId, int itemId, int order, CharSequence title) GroupID: 用以關聯相同分組的選項,若無分組則填入”0” ItemID: 填入上步驟所定義的選項識別符號 Order: 功能表的顯示順序 Title: 選項顯示於畫面時的標題

12 onOptionsItemSelected(MenuItem item)
public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()){ case MENU_ABOUT: txtDisplay.setText("這是Menu的練習範例"); break; case MENU_QUIT: finish(); } return super.onOptionsItemSelected(item);

13 getItemId() 當選單選項被使用者核選時,可利用menuitem.getItemId()取回被核選的選項識別符號,因此可以搭配switch_case結構,完成核選後的動作

14 練習 試著實作一個使用選單的簡易點餐程式,當使用者選擇選單上的餐點後,再由使用者輸入數量後,按下按鈕計算總價

15 Context Menu 快捷選單(Context Menu)很像windows中的快顯功能表,只是context menu必須在「指定」的物件上用手指「長按」才可以啟動,啟動後則是與option menu十分類似,最大差異在於context menu必須「指定」啟動的物件。

16 步驟 建立「選單程式碼樣板」 import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; 定義選項標籤 撰寫onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) Menu.add(): 加入所定義的選項 撰寫核選選項後的動作onContextItemSelected(MenuItem item) 搭配switch()語法 註冊啟動快捷選單的物件

17 建立樣板 在程式碼編輯區案滑鼠「右鍵」,啟動快顯功能表
「Source」 -> 「Override/Implement Methods」 核選「onCreateContextMenu」、「onContextItemSelected」

18 註冊啟動的物件 private TextView txtDisplay;
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); this.registerForContextMenu(txtDisplay); //指定使用者必須在 //這個textview物件上長按才能啟動context menu } /*如果想在畫面空白處啟動context menu,則須註冊為Layout物件*/

19 練習 請試著把上一個點餐程式修改為Context Menu模式

20 package aa.bb; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.widget.*;//按鍵函數庫 import android.view.MenuItem; import android.view.View; import android.view.Menu; public class Text extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); //將兩邊按鍵連結宣告 }

21 private TextView text;
protected static final int MENU_14 = Menu.FIRST; protected static final int MENU_18 = Menu.FIRST+1; protected static final int MENU_YELLOW = Menu.FIRST+2; protected static final int MENU_WHITE = Menu.FIRST+3; private void findViews(){ //設定宣告兩邊按鍵連結 text=(TextView)findViewById(R.id.text); }

22 public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_14, 0, "14"); menu.add(0, MENU_18, 0, "18"); menu.add(0, MENU_YELLOW, 0, "YELLOW"); menu.add(0, MENU_WHITE, 0, "WHITE"); return super.onCreateOptionsMenu(menu); }

23 public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){ case MENU_14: text.setTextSize(14); break; case MENU_18: text.setTextSize(18); case MENU_YELLOW: text.setTextColor(Color.YELLOW);; case MENU_WHITE: text.setTextColor(Color.WHITE);; } return super.onOptionsItemSelected(item);

24 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_height="wrap_content" /> </LinearLayout>


Download ppt "選單."

Similar presentations


Ads by Google