Ch06 再談選單元件 物件導向系統實務.

Slides:



Advertisements
Similar presentations
第2章  Android应用的界面编程.
Advertisements

第13章 繪圖與多媒體 13-1 顯示圖檔-行動相簿 13-2 音樂播放-音樂播放器 13-3 影片播放-視訊播放器
實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
Android + Web Service 建國科技大學 資管系 饒瑞佶 2017/3 V1.
ArrayAdapter & Spinner
Location Based Services - LBS
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
第15章 使用定制组件 使用定制组件是在Flex提供的组件基础上创建自定义的组件模块。虽然Flex内置了大量的组件以满足不同应用的需求,但是这些组件只是用户界面中较为常见的元素。在大型的或者复杂的应用中,往往需要将这些基本元素组合,组成新的模块单元使用。对于这种情况,Flex提供了自定义组件的功能。本章主要介绍如何使用Flex编程语言创建自定义组件。
使用Android控制Arduino 史先强
第10章 App微信分享的实现 倚动实验室.
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
第8章 Android内容提供者(ContentProvider)应用
Chapter 6 Advanced UI Design.
Android智慧型手機程式設計實務應用班
Ch5 Android應用程式的主要組成.
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Chapter 6 進階UI設計.
第4章 Android生命周期.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
开发Eclipse插件的基本步骤 插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要: 决定插件如何与平台集成
ANDROID PROGRAMMING2.
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
實驗十四:顯示與控制地圖.
Java程序设计 第9章 继承和多态.
第2讲 移动应用开发基础知识(二) 宋婕
RecyclerView and CardView
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
Location Based Services - LBS
Ch02-基礎語法.
生活智慧王 樹德科技大學 資訊工程系 指導教授 : 陳毓璋 教授 小組成員: 劉上緯 翁維廷 洪文財.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
ArrayAdapter & Spinner
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
主编:钟元生 赵圣鲁.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
補間動畫 (Tween Animation) 靜宜大學資管系 楊子青
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
Android Speech To Text(STT)
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
第2章 Java语言基础.
讀取網路資料及JSON開放資料 靜宜大學資管系 楊子青
加速感測器 靜宜大學資管系 楊子青.
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Presentation transcript:

Ch06 再談選單元件 物件導向系統實務

大綱 下拉式選單Spinner 捲軸ScrollView 數字轉輪NumberPicker

Spinner下拉式選單

Spinner 選單元件

Spinner 選單元件 Spinner 元件的屬性設定 getSelectedItemPosition() 讀取 Spinner 元件 的選取項目 onItemSelected():Spinner 元件的選擇事件

建立Spinner下拉式選單元件的過程 必須完成下列幾件事: 在程式檔中取得這個Spinner元件,並為它建立一個OnItemSelectedListener()事件處理程序,當使用者點選Spinner的選單項目之後,這個事件中的程式碼就會被啟動執行。

建立Spinner下拉式選單元件的二種方式 就技術層面來說,也可以直接將選項清單以陣列的方式宣告在程式中,然後再設定給Spinner元件。但是這種方法無法做出多語言版本的App,因為建立在程式碼中的字串無法在執行的過程隨意更改,所以正確的方式是把字串建立在專案的字串資源檔res/values/strings.xml中,再讓程式取得資源來使用。

建立Spinner下拉式選單元件的第一種方式 Step 1. 開啟單元9建立的「婚姻建議」程式,把選項陣列以<string-array>標籤的格式宣告在程式專案的res/values/strings.xml檔案中,另外我們加入一個用來當作Spinner選單標題的字串。 <?xml version="1.0" encoding="utf-8"?> <resources> … <string-array name="sex_list"> <item>男</item> <item>女</item> </string-array> <string name="spn_sex_list_prompt">請選擇性別</string> </resources>

建立Spinner下拉式選單元件的第一種方式 Step 2. 在專案介面佈局檔res/layout/main.xml中建立一個Spinner介面元件如以下 <Spinner android:id="@+id/spnSex“ android:layout_width="match_parent“ android:layout_height="wrap_content“ android:entries="@array/sex_list“ android:spinnerMode="dialog“ android:prompt="@string/spn_sex_list_prompt" /> android:entries屬性用來設定選單,這個選單是一個定義在字串資源檔中的陣列。android:spinnerMode屬性是用來設定選單是用下拉式的型態還是對話盒的型態顯示,如果是對話盒的型態,還可以使用android:prompt屬性,設定對話盒的標題。

建立Spinner下拉式選單元件的第一種方式 Step 3. 開啟程式檔,在裡頭建立一個AdapterView.OnItemSelectedListener物件,並完成其中的onItemSelected()和onNothingSelected()二個方法的程式碼如下 private AdapterView.OnItemSelectedListener spnSexOnItemSelected = new AdapterView.OnItemSelectedListener () { public void onItemSelected(AdapterView parent, View v, int position, long id) { msSex = parent.getSelectedItem().toString(); } public void onNothingSelected(AdapterView parent) { };

建立Spinner下拉式選單元件的第一種方式 Step 4. 加入取得Spinner介面元件的程式碼,再把上一個步驟建立的OnItemSelectedListener物件設定成為Spinner元件的事件處理程序,另外還要修改按下Button元件之後執行的程式碼,換成利用msSex中的字串來決定性別。

練習1:建立飲料店

strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Ch06_01_DrinkBar</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string-array name="drinks"> <item>紅茶</item> <item>綠茶</item> <item>西瓜汁</item> <item>咖啡</item> </string-array> </resources>

package com. example. ch06_01_drinkbar; import android. app package com.example.ch06_01_drinkbar; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; public class MainActivity extends Activity { Spinner spinDrinks; Button btnOrder; EditText edtOrder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinDrinks = (Spinner)findViewById(R.id.spinDrinks); btnOrder = (Button)findViewById(R.id.btnOrder); edtOrder = (EditText)findViewById(R.id.edtOrder); btnOrder.setOnClickListener(orderOnClick); }

Button. OnClickListener orderOnClick = new Button Button.OnClickListener orderOnClick = new Button.OnClickListener() { public void onClick(View v) { String msg = spinDrinks.getSelectedItem().toString(); edtOrder.setText(msg); } };

ListView清單方塊

ListView 清單方塊

onItemClick(): ListView 的按一下事件

範例6-3 :使用 ListView 建立選單

使用 ListView 建立選單

使用 ListView 建立選單

使用 ListView 建立選單

使用 ListView 建立選單

使用 ListView 建立選單

使用 ListView 建立選單

使用 ListView 建立選單

練習2

strings.xml <string-array name="sugars"> <item>正常</item> <item>少糖</item> <item>半糖</item> <item>微糖</item> <item>無糖</item> </string-array>

MainActivity.java package com.example.ch06_01_drinkbar; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView;

public class MainActivity extends Activity { Spinner spinDrinks; Button btnOrder; EditText edtOrder; ListView lstvSugar; ArrayList<String> selectSugar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinDrinks = (Spinner)findViewById(R.id.spinDrinks); btnOrder = (Button)findViewById(R.id.btnOrder); edtOrder = (EditText)findViewById(R.id.edtOrder); lstvSugar = (ListView)findViewById(R.id.lstvSugar); btnOrder.setOnClickListener(orderOnClick); lstvSugar.setOnItemClickListener(lstvSugarOnItemClickListener); }

Button. OnClickListener orderOnClick = new Button Button.OnClickListener orderOnClick = new Button.OnClickListener() { public void onClick(View v) { String msg = spinDrinks.getSelectedItem().toString(); if(selectSugar.size() > 0) for(String str:selectSugar) msg += " " + str; else msg += " " + "正常"; edtOrder.setText(msg); } };

AdapterView.OnItemClickListener lstvSugarOnItemClickListener = new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) selectSugar = new ArrayList<String>(); TextView txvSugar = (TextView) v; //將被按下的View物件轉成TextView物 件 String strSugar = txvSugar.getText().toString(); //取得項目中的文字 if(selectSugar.contains(strSugar)) selectSugar.remove(strSugar); else selectSugar.add(strSugar); } };

在程式中變更 Spinner 的顯示項目 ArrayAdapter:Spinner 與資料的橋樑 ArrayAdapter():建立ArrayAdapter 物件 setDropDownViewResource():設定選單項目的顯示樣式 setAdapter():將ArrayAdapter 與Spinner 綁在一起

ArrayAdapter:Spinner 與資料的橋樑

ArrayAdapter():建立 ArrayAdapter 物件

setDropDownViewResource(): 設定選單項目的顯示樣式

setAdapter():將 ArrayAdapter 與Spinner 綁在一起

使用 Spinner 製作飲料訂單

使用 Spinner 製作飲料訂單

使用 Spinner 製作飲料訂單

使用 Spinner 製作飲料訂單

使用 Spinner 製作飲料訂單

使用 Spinner 製作飲料訂單

使用 Spinner 製作飲料訂單

練習三 新增一個選項是飲料溫度. 當在飲料選項選定了飲料後,則會控制溫度的選項內容;例 如:如果是茶飲料則有冰和溫,可是果汁類,就只能是冰的

public class MainActivity extends Activity { Context context = MainActivity.this; Spinner spinDrinks; Button btnOrder; EditText edtOrder; ListView lstvSugar; ArrayList<String> selectSugar; Spinner spinIce; ArrayAdapter<CharSequence> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinDrinks = (Spinner)findViewById(R.id.spinDrinks); btnOrder = (Button)findViewById(R.id.btnOrder); edtOrder = (EditText)findViewById(R.id.edtOrder); lstvSugar = (ListView)findViewById(R.id.lstvSugar); spinIce = (Spinner)findViewById(R.id.spinIce);

// Create an ArrayAdapter using the string array and a default spinner layout adapter = ArrayAdapter.createFromResource(this, R.array.ice1, android.R.layout.simple_spinner_item); // Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner spinIce.setAdapter(adapter); btnOrder.setOnClickListener(orderOnClick); lstvSugar.setOnItemClickListener(lstvSugarOnItemClickListener); spinDrinks.setOnItemSelectedListener(spinDrinksOnItemSelectedListener); }

AdapterView.OnItemSelectedListener spinDrinksOnItemSelectedListener = new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView a, View v, int pos, long id) { // Create an ArrayAdapter using the string array and a default spinner layout if(pos == 2) adapter = ArrayAdapter.createFromResource(context, R.array.ice2, android.R.layout.simple_spinner_item); else R.array.ice1, android.R.layout.simple_spinner_item); // Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner spinIce.setAdapter(adapter); } public void onNothingSelected(AdapterView<?> a) };

Eclipse操作技巧 在建立AdapterView.OnItemSelectedListener物件時,可以善用Alt + /叫出程式碼輔助精靈,再從建議的清單中選擇想要的項目。這種操作技巧可以讓程式碼輔助精靈自動幫我們加入必要的方法。 在「介面佈局檔」的純文字模式下,將編輯游標設定到某一個介面元件的標籤中,然後輸入「android:」,稍等半秒鐘,就會出現屬性清單。點選其中某一個屬性,就會顯示該屬性的使用說明,我們也可以同時按下鍵盤上的Alt和/按鍵,隨時叫出這個程式碼輔助精靈。 49