iT邦幫忙

DAY 4
6

Android 學習手札系列 第 4

Day4 - Android - 修練的旅途「巴特與吐司」

  • 分享至 

  • xImage
  •  

與哥布林say hello後,就算趟上世界的旅途啦
今天是修練課程,在面對新的戰鬥之前,有些基本技能是得要習得的
而將學習的技能名稱為「巴特」與「吐司」~恢復用(誤)
今天要學習新的技能~巴特(button)冷
請再依昨天所說明的方法再開一個新的戰場吧!

接著將畫面上的hello world刪除後,再從左邊的"Form Widgets"拉出這次的技能-巴特

拉出來後,我們要改這個button的屬性,不過在改屬性,我們先做個動作,還記得昨天要大家去修改文字的地方嗎,我們今天要增加一個新的字串,所以請打開"string.xml"

接著請依箭頭順序做接下來說明的步驟

  1. 點下 ADD 按鈕,會跳出新增的視窗
  2. 選擇 "String",確定
  3. 這時會看到右邊多了一個"String"字樣
  4. 在右手邊的Name填入attack;Value填入攻擊
  5. 然後再依此法,分別點選"app_name"以及"title_activity_main",將Value改為"修練I"
    完成後請儲存他

再來回到介面 - activity_main.xml的畫面,點擊剛剛新增的button,右邊會多出一個字視窗-Properties,
這時我們要改兩個屬性,一個是"Id"改為"@+id/btnAttack",另外一個是"Text",

點下右邊"..."的按鈕,然後選擇我們剛剛新增的"attack"字串,在存檔後,我們可以看到畫面會變成下面這樣

以上動作,讓我們將"巴特"這個技能的"型"給做出來了,就下來就是讓他有實質的動作啦!
請打開如下圖的"MainActivity.java"

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //招式建構區
    }

首先,是先定義讓程式碼可以認得這個招式是什麼東西

Button btnAttack = (Button)findViewById(R.id.btnAttack);

等號左邊是我們定義的變數類型
等號右邊是我們要取得的招式位子,再用(Button)的方式做為轉型之用。

讓程式認得後,就是對他定義動作了
定義動作的方法叫做setOnClickListener(OnClickListener l),也就文義上來說,就是去偵測這個物件被點擊"OnClick"的動作
所以這邊段的程式碼結構是這樣

		btnAttack.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
					//被點擊後要執行的動作
			}
		});

而我們要做的動作很簡單,就是計算攻擊次數,也就是點擊"攻擊"按鈕的次數,所以我們要定義一個全域的數值變數mCounter,來記錄次數之。同時要用讓我們知道現在被點擊了幾次,而秀出訊息的這個動作,用的招式名稱叫做「吐司(Toast)」。
而 Toast 的語法結構如下:

//第一個參數:context,也就是要在這個view的內容中執行
//第二個參數:我們要呈現的訊息
//第三個參數:呈現的長度,有二:Toast.LENGTH_SHORT/Toast.LENGTH_LONG,短/長
Toast.makeText(Context context, CharSequence text, int duration)

因此,在最後整個完成的內容是這樣的

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /* TODO: 招式建構區 */
        //點擊的次數
        mCount = 0;
        Button btnAttack = (Button)findViewById(R.id.btnAttack);
        btnAttack.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				/* TODO: 被點擊後要執行的動作 */
				//點擊一次就+1
				mCount++;
				//要呈現的訊息字串
				String msg = "您連續攻擊了" + mCount + "次";
				Toast.makeText(v.getContext(), msg, Toast.LENGTH_SHORT).show();
			}
		});
    }

在沒有特殊意外的狀況下,這樣就在我們的侍者身上看到上面這個畫面嘍
完整的程式碼可以從GitHub取得哦

《第一場戰役 世界的元素》


上一篇
Day 3 - Android - 第一場戰役
下一篇
Day 5 - Android - 世界的元素
系列文
Android 學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
SunAllen
iT邦研究生 1 級 ‧ 2012-09-28 17:58:06

好專業的文讚讚

0
海綿寶寶
iT邦大神 1 級 ‧ 2012-10-01 09:40:33

Toast是何物
疑惑

mosil iT邦新手 4 級 ‧ 2012-10-01 12:14:32 檢舉

mosil提到:
秀出訊息的這個動作,用的招式名稱叫做「吐司(Toast)」。

就是您看到的「您連續攻擊了xx次」的那個訊息框就是

了解了,謝謝

0
Liz
iT邦新手 5 級 ‧ 2012-11-01 02:22:41

想請教一下
app_name與title_activity_main之間的關係
(有試著修改app_name的value,但沒有看到任何改變;
而修改title_activity_main,標題的文字就改變了)
謝謝

mosil iT邦新手 4 級 ‧ 2012-11-02 08:47:52 檢舉

app_name 欄位其實是一個 app 裡共用的 application 檔案名稱
而當一個 activity 的<intent-filter>屬性的<action>被 "android.intent.action.MAIN" 同時<category>屬性有被設定成系統預設屬性時,其名稱就會跟著一起被呈現在 app 列表裡面
反過來說,若是您在 app 列表裡看到多個相同 icon 而名稱都是在該 app 程式碼裡的 activity 時,就要回頭看是否為這兩個屬性沒處理好

我要留言

立即登入留言