Major Softwares

  INDEX PAGE

  1. 簡介
  2. Java, Android和LibGDX好書推介
  3. Java, Android和LibGDX要學的知識
  4. 用Windows寫Java程式
  5. 用Eclipse寫Java程式
  6. 用Eclipse寫Android程式
  7. 用Eclipse寫LibGDX程式
  8. Standard Java Naming Conventions
  9. System.out.println()的用法和意思
  10. Where is main() method in Android?

LibGDX - Splash & Menu Screen

  1. LibGDX: World, Texture, Background, Camera, Viewport, Screen & OpenGL
  2. LibGDX: Texture, TextureRegion, SpriteBatch & Sprite
  3. UML(Unified Modeling Language): Class Diagram
  4. Type Casting, Upcasting & Downcasting
  5. @Override的用法和意思
  6. LibGDX: Scene2d & Graphical User Interface(GUI)
  7. LibGDX: Splash Screen
  8. LibGDX: Texture Packer
  9. LibGDX: BitmapFonts, JSON & Skin
  10. Android: R.java File
  11. Android: onClick事件的5種實現方式
  12. LibGDX: Game Menu Screen
  13. LibGDX: Advanced Game Menu Screen (using Abstract Screen)
  14. LibGDX: Disposable Interface
  15. Java & LibGDX: super keyword
  16. LibGDX: Advanced Game Menu Screen (using AssetManager)
  17. Java: Array, Arrays, List, ArrayList & LibGDX: Array
  18. LibGDX: File I/O (Preferences)
  19. LibGDX: Game Level Selection Screen
  20. LibGDX: Advanced Game Level Selection Screen (using AssetManager)

LibGDX - Tiled 2D Platform Game

  1. LibGDX: Lifecylce (Render() Method)
  2. LibGDX: Delta Time
  3. LibGDX: Animation & Spritesheet
  4. LibGDX: Keyboard, Mouse & Touch Screen Control
  5. Input Control (Polling VS Event Driven Input)
  6. LibGDX: Tiled (Background and Foreground)
  7. LibGDX: Jumping Action
  8. LibGDX: Tiled (Collision Detection)
  9. LibGDX: Tiled (Bullet Class)
  10. LibGDX: Audio (Sound & Music)
  11. LibGDX: Tiled (Scrollable Background with Camera & HUD)
  12. LibGDX: WorldController & WorldRenderer Class

LibGDX/Java - Card Game No.1 - Blackjack

  1. LibGDX: Install & Setup Android Studio IDE
  2. LibGDX: Use Android Studio to Run Java Hello World
  3. LibGDX: Use Android Studio to Run LibGDX Hello World
  4. Adobe Illustrator: Basic Components Part 1
  5. Adobe Illustrator: Basic Components Part 2
  6. Adobe Illustrator: BlackJack Table & Cards
  7. LibGDX: Blackjack Animation
  8. LibGDX: Interpolation
  9. Java: toString() Method
  10. Java: Blackjack Shuffle Methods
  11. LibGDX: Blackjack Shuffle Method
  12. Java: Blackjack Card Game

LibGDX - Others

  1. Making and Displaying App Icon
  2. LibGDX: Displaying Traditional and Simplified Chinese Characters
  3. LibGDX: Handling Different Screen Resolutions

Unity Game Engine & C#

  1. Visual Studio: C# Hello World
  2. Unity: C# Hello World
  3. Unity: Handling Different Screen Resolutions
  4. Unity: Life Cycle
  5. Unity: StartCoroutine, StopCoroutine, IEnumerator & Yield
  6. Unity: Splash Screen
  7. Unity: Fonts, Traditional and Simplified Chinese Characters
  8. Unity: GameObject, Class Object, new & Instantiate
  9. Unity: Start Screen with Glowing Animated Button
  10. Unity: C# Get & Set Modifier
  11. Unity: Delegates & Events
  12. Unity: File I/O, Read & Write Text File & PlayerPrefs
  13. Unity: Game Level Selection Screen
  14. Unity: Game Menu Screen & ScreenManager
  15. Unity: Encrypt and Decrypt Text File
  16. Unity: Options Menu Screen
  17. Unity: Convert Numbers Image to Custom Font

Unity - Card Game No.1 - Blackjack

  1. Unity: Blackjack Card Game - Part 1 (Full Game)
  2. Unity: Blackjack Card Game - Part 2
  3. Unity: Blackjack Card Game - Part 3
  4. Unity: Blackjack Card Game - Part 4
  5. Unity: Blackjack Card Game - Part 5
  6. Unity: Blackjack Card Game - Part 6
  7. Unity: Blackjack Card Game - Part 7

以下是預告-Coming soon!


Secret Weapon No.1

  1. Unity: Card Game No.2

Advanced Programming

  1. Unity: GPS Programming
  2. Unity: User Login System
  3. Unity: Augmented Reality (AR)

Secret Weapon No.2

  1. Unity: GPS & AR Application

第21節 - Android: onClick事件的5種實現方式

這一節我會介紹Android onClick事件的5種實現方式。當我們明白onClick事件的5種實現方式,我們就可以進入下一節(第22節 - LibGDX: Game Menu Screen),因為在Game Menu Screen內我們須要用到"Click" Button選擇不同按鈕,如下圖:

Android-onClick事件

Android onClick事件有5種實現方式,第1種最簡單,它是Android預設的onClick事件實現方式,不須要用到View物件的setOnClickListener()方法(例如: button.setOnClickListener())。

注意1,因為第1種方式是Android預設的,不能用在LibGDX程式上,LibGDX必須用第2至5種的方式。

注意2,因為第1種方式是Android預設的,不須用View物件的setOnClickListener()方法,但第2至5種方式就須要用到View物件的setOnClickListener()方法,我會在這一節詳細介紹。

以下列出Android onClick事件的5種實現方式:

  1. 方式1 - Android Default onClick Events。
  2. 方式2 - Activity Implements OnClickListener Interface。
  3. 方式3 - Member Class(Inner Class) Implements OnClickListener Interface。
  4. 方式4 - Interface Type。
  5. 方式5 - Anonymous Inner Class。

方式1 - Android Default onClick Events

以下是第1種方式,它是Android預設的onClick事件實現方式,不須要用到View物件的setOnClickListener()方法(例如: button.setOnClickListener()),只要在Button的屬性欄設定它的Android:On Click=XXX

注意XXX代表主程式(例如: MainActivity.java)內的onClick方法名字,我會用Android:On Click=action做例子。

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1和On Click=action。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  2. 在MainActivity.java內建立action()方法,在action()方法內我們用findViewById()方法把activity_main.xml的textView1連接到MainActivity.java的textView。
    最後用setText()方法把textView顯示的字串改為"Good Day!!"。

以下是實物例子:

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  2. 在Button物件的屬性欄設定它的On Click=action。
    在MainActivity.java內建立action()方法,在action()方法內我們用findViewById()方法把activity_main.xml的textView1連接到MainActivity.java的textView。
  3. 在onCreate()方法內預設第1個顯示畫面是"activity_main",則是以上的activity_main.xml。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  4. 當我們按"Button"按鈕,就會啟動action()方法,textView1顯示的字串就會改為"Good Day!!"。
Download above code and sample pictures here!

方式2 - Activity Implements OnClickListener Interface

以下是第2種方式,這個方式會用到OnClickListener介面。

注意1,因為這方式不是Android預設的,我們不須要在Button物件的屬性欄設定Android:On Click=action。

注意2,因為這方式不是Android預設的,我們須要用到View物件的setOnClickListener()方法。

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  2. 在MainActivity.java內實作OnClickListener介面。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button和textView1連接到MainActivity.java的textView。
    再設定button的監聽動作(button.setOnClickListener(this);),在這例子裡當Mouse按下按鈕時,button元件就會啟動onClick()方法。

    注意,Keyword "this"相等於這個類別的物件。"this"=MainActivity類別的物件=ActionBarActivity類別物件=OnClickListener介面物件。因為MainActivity類別繼承ActionBarActivity,也實作了OnClickListener介面,所以"this"就可作ActionBarActivity或OnClickListener的物件用。

    我也在第17節 - LibGDX: Splash Screen介紹過Keyword "this"。

  4. 最後在onClick()方法內用setText()方法把textView顯示的字串改為"Good Day!!"。

以下是實物例子:

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
  2. 再建立一個TextView物件,在屬性欄設定它的id=textView1。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的textView1連接到MainActivity.java的textView。
  4. 再用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button。
  5. 再設定button的監聽動作(button.setOnClickListener(this);)。
  6. 在onCreate()方法內預設第1個顯示畫面是"activity_main",則是以上的activity_main.xml。
  7. 當Mouse按下按鈕時,button元件就會啟動onClick()方法,textView1顯示的字串就會改為"Good Day!!"。
Download above code and sample pictures here!

方式3 - Member Class(Inner Class) Implements OnClickListener Interface

以下是第3種方式,這個方式也須要用到OnClickListener介面,不過這次不是用在MainActivity類別內,而是用在Inner Class內。

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  2. 在MainActivity.java內建立一個action物件。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button和textView1連接到MainActivity.java的textView。
    再設定button的監聽動作(button.setOnClickListener(action);),在這例子裡當Mouse按下按鈕時,button元件就會啟動action內的onClick()方法。

    注意,這次不須用Keyword "this",因為我們建立了Action Inner Class,所以button.setOnClickListener()傳入action物件。

  4. 最後建立了Action Inner Class,再實作OnClickListener介面,在onClick()方法內用setText()方法把textView顯示的字串改為"Good Day!!"。

以下是實物例子:

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
  2. 再建立一個TextView物件,在屬性欄設定它的id=textView1。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的textView1連接到MainActivity.java的textView。
  4. 再用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button。
  5. 再設定button的監聽動作(button.setOnClickListener(action);)。
  6. 在onCreate()方法內預設第1個顯示畫面是"activity_main",則是以上的activity_main.xml。
  7. 當Mouse按下按鈕時,button元件就會啟動onClick()方法,textView1顯示的字串就會改為"Good Day!!"。
Download above code and sample pictures here!

方式4 - Interface Type

以下是第4種方式,這個方式也須要用到OnClickListener介面,不過這次不是用在MainActivity類別內,也不是用在Inner Class內,而是用在介面(Interface)物件內。

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  2. 在MainActivity.java內建立一個介面(Interface)物件action。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button和textView1連接到MainActivity.java的textView。
    再設定button的監聽動作(button.setOnClickListener(action);),在這例子裡當Mouse按下按鈕時,button元件就會啟動action內的onClick()方法。

    注意1,這次也不須用Keyword "this",因為我們建立介面(Interface)物件action,所以button.setOnClickListener()傳入action物件。
    注意2,這次action是介面(Interface)物件,而不是第3種方式的Inner Class物件。

  4. 最後建立了Action Inner Class,再實作OnClickListener介面,在onClick()方法內用setText()方法把textView顯示的字串改為"Good Day!!"。

以下是實物例子:

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
  2. 再建立一個TextView物件,在屬性欄設定它的id=textView1。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的textView1連接到MainActivity.java的textView。
  4. 再用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button。
  5. 再設定button的監聽動作(button.setOnClickListener(action);)。
  6. 在onCreate()方法內預設第1個顯示畫面是"activity_main",則是以上的activity_main.xml。
  7. 當Mouse按下按鈕時,button元件就會啟動onClick()方法,textView1顯示的字串就會改為"Good Day!!"。
Download above code and sample pictures here!

方式5 - Anonymous Inner Class

以下是第5種方式,這個方式其實與第4種方式相同,他是第4種方式的簡化版,它把介面(Interface)物件action刪除,所以叫做Anonymous(匿名)。

注意,這個方式也須要用到OnClickListener介面,和第4種方式一樣,OnClickListener介面不是用在MainActivity類別內,也不是用在Inner Class內,而是用在介面(Interface)物件內。

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
    再建立一個TextView物件,在屬性欄設定它的id=textView1。
  2. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button和textView1連接到MainActivity.java的textView。
    再設定button的監聽動作(button.setOnClickListener(XXX);),在這例子裡當Mouse按下按鈕時,button元件就會啟動onClick()方法。

    注意,XXX就是第4種方式內的介面(Interface)物件action,因為action只會用一次,傳入button.setOnClickListener()後,就沒有用,所以很多時也會省略,所以叫做Anonymous(匿名)。

  3. 最後建立了Action Inner Class,再實作OnClickListener介面,在onClick()方法內用setText()方法把textView顯示的字串改為"Good Day!!"。

以下是實物例子:

Android-onClick事件
  1. 首先在activity_main.xml內建立一個Button物件,在屬性欄設定它的id=button1。
  2. 再建立一個TextView物件,在屬性欄設定它的id=textView1。
  3. 在onCreate()方法內我們用findViewById()方法把activity_main.xml的textView1連接到MainActivity.java的textView。
  4. 再用findViewById()方法把activity_main.xml的button1連接到MainActivity.java的button。
  5. 再設定button的監聽動作(button.setOnClickListener(XXX);)。

    注意,XXX就是第4種方式內的介面(Interface)物件action,因為action只會用一次,傳入button.setOnClickListener()後,就沒有用,所以很多時也會省略,所以叫做Anonymous(匿名)。

  6. 在onCreate()方法內預設第1個顯示畫面是"activity_main",則是以上的activity_main.xml。
  7. 當Mouse按下按鈕時,button元件就會啟動onClick()方法,textView1顯示的字串就會改為"Good Day!!"。
Download above code and sample pictures here!