Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3516953
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: Java

2010-10-19 13:30:37

Event Listener的用法: 以Click Listener為例

以Android所提供的View.OnClickListener來說明程式實作方法。一個較為良好的實作方法是在我們的Acitivty類別裡 實作View.OnClickListener介面,即:

import android.view.View;

public class HelloClickListener extends Activity implements View.OnClickListener {
...
}

每一個View都可以註冊一個event listener,當Android框架收到「click」事件後,便回呼event listener的callback method。以Button類別(按鈕元件)為例,當我們想要處理使用者觸控按鈕的事件時,就要呼叫Button類別的 setOnClickListener()方法來註冊click listener。上述的實作方方法是,直接在我們的Activity類別HelloClickListener裡實作 View.OnClickListener,因此上述Button類別的click listener為「this」。

上述的實作觀念,可用圖1來表示。

HelloClickListener.png
圖1: HelloClickListener類別實作View.OnClickListener介面

註冊click listener的程式碼如下:

   public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button)findViewById(R.id.btn);
button.setOnClickListener(this);
}

在onCreate()裡先找到Button元件,它的click listener為this為,接著在我們的Activity類別裡實作onClick()。onClick()方法的程式碼如下,我們以Toast類別 來回應訊息給使用者:

   public void onClick(View v) {
Toast.makeText(
this,
"Yes.",
Toast.LENGTH_LONG).show();
}

完整程式碼: HelloClickListener.java

package com.moko.helloclicklistener;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;

public class HelloClickListener extends Activity implements View.OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button)findViewById(R.id.btn);
button.setOnClickListener(this);
}

public void onClick(View v) {
Toast.makeText(
this,
"Yes.",
Toast.LENGTH_LONG).show();
}

}

執行結果

clicklistener-1.png
圖2: HelloClickListener的執行結果

當使用者觸碰畫面上的按鈕時,便以Toast類別在畫面上顯示「Yes」。

什麼是樣式(Styles)?

Android的樣式設計(style)是一個很重要的功能,因為它可以讓應用程式裡的元件(widget)「長」得跟別人很不一樣。樣式設計的使 用規定如下:

  • 在Android專案裡以XML資源檔來定義「樣式」
  • 一個Android專案可以定義多個樣式
  • 讓widget套用其中一個樣式

Android的styles功能,主要的對象是widget,樣式是為了套用到widget上;另外Android還提供佈景(theme)功 能,可以做更大範圍的套用。

如何定義樣式

定義樣式的方式如下:

1. 在Android專案的「res/values」資料夾裡建立styles.xml樣式定義檔。如圖1。

styles-1.png
圖1: 建立styles.xml

2.在styles.xml裡定義樣式,以下是一個範例:




styles.xml的寫法說明如下:

1. 在 標籤裡定義資源項目,

修改AndroidManifest.xml,在標籤裡加上「theme」屬性:


package="com.moko.hellotheme"
android:versionCode="1"
android:versionName="1.0.0">
android:theme="@style/myTheme">
android:label="@string/app_name">






執行結果:

theme-1.png
圖1: HelloTheme的執行結果

在這個範例裡,我們並沒有修改任何的程式碼,其原理是透過佈景設定的方法。定義佈景的方式與定義樣式(styles)相同,同樣是在 styles.xml裡以標籤來定義。

以下是使用HelloTheme的說明:

1. 的name屬性為android:windowNoTitle時,表示定義是否要顯示視窗標題,在此設定為true,表示不要有 視窗標題
2. 在標籤裡加上theme屬性,將佈景套用到應用程式

佈景除了能套用到應用程式外,也能套用到activity。如何套用佈景到activity呢?只要在裡加入 theme屬性即可,做法與相同。

阅读(1123) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~