選單.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
第二章 JAVA语言基础.
類別與物件 Class & Object.
ArrayAdapter & Spinner
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
ANDROID PROGRAMMING1.
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
Chapter 4 手機控制項應用.
實驗四:單位轉換程式.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
其他視窗.
Ch06 再談選單元件 物件導向系統實務.
使用Android控制Arduino 史先强
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第9章 位置服务与地图应用.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Chapter 6 Advanced UI Design.
Android智慧型手機程式設計實務應用班
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Android基本程式設計 建國科技大學 資管系 饒瑞佶.
Chapter 6 進階UI設計.
第4章 Android生命周期.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
SQL Stored Procedure SQL 預存程序.
實驗十四:顯示與控制地圖.
Java程序设计 第9章 继承和多态.
第2讲 移动应用开发基础知识(二) 宋婕
RecyclerView and CardView
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
Android 專案建立、編譯與執行.
第一單元 建立java 程式.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Android Application Component
ArrayAdapter & Spinner
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
補間動畫 (Tween Animation) 靜宜大學資管系 楊子青
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
Android Speech To Text(STT)
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
第2章 Java语言基础.
加速感測器 靜宜大學資管系 楊子青.
SQLite資料庫 靜宜大學資管系 楊子青.
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
Part 8 Broadcast Receiver、Service和App Widget
方法(Method) 函數.
Presentation transcript:

選單

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

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

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

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);

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

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

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

定義選項識別符號 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個選單選項

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); }

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

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);

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

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

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

步驟 建立「選單程式碼樣板」 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()語法 註冊啟動快捷選單的物件

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

註冊啟動的物件 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物件*/

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

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(); //將兩邊按鍵連結宣告 }

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); }

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); }

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);

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>