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

第10節 - Where is main() method in Android?

這一節我會介紹Android開始執行程式時,須要執行的檔案。

如果大家有學習Java,Java是須要有一個main() method去執行程式。我在第5節 - 用Eclipse寫Java程式示範過用System.out.println(),它主要用來把文字顯示在螢幕上。System.out.println()就是包括在main() method 之內。

main() method in Java

但是Android和Java不同,Android是不須要有main() method去執行程式的,Android會用你第一個程式(例如:HelloWorld extends Activity那個),Android就是用HelloWorld內的onCreate() method去執行程式。

 onCreate() in Android

Android沒有main() method的最好解釋(Best Description)

首先我會把我閱讀過Android沒有main() method最好的解釋記錄下來:

1. Java
In core Java programs we need a main() method, because while executing the byte code the JVM(Java Virtual Machine) will search for the main() method in the class and start executing there.

2. Android
In the case of Android, the DVM(Dalvik Virtual Machine) is designed to find a class which is a subclass of Activity(extends Activity) and which is set as a LAUNCHER(in AndroidManifest.xml) to start the execution of the application from its onCreate() method, so there is no need of a main() method.

main() in Java & onCreate() in Android

Android沒有main() method詳解

看完以上其他人的解釋後,想信大家會對Android沒有main() method有了初步了解,以下部分我會加以解釋。

首先Java須要main() method是因為Java是用JVM,而JVM在設計上是會去尋找main() method執行程式,想信大家對Java須要main() method應該明白了。

main() method in Java

1-大家可以用Windows Notepad輸入圖片內的Java Hello World程式,main() method就包括在內。

2-注意,如果我們的程式有多過一個class,所有的class檔案就會打包(Packaging)在一個.jar文件夾內,.jar是一個Package File Format文件夾。

3-最後,JVM會在HelloWorld.class內尋找main() method執行程式。

至於Android,Android在設計上不是用JVM(Java Virtual Machine),而是用DVM(Dalvik Virtual Machine),而DVM在設計上是會去尋找onCreate() method執行程式。

onCreate() method in Android

1-大家可以用Eclipse輸入圖片內的Android Hello World程式,onCreate() method就包括在內。

2-和Java不同,這次HelloWorld.class不是給JVM用,而是給DVM用,所以要用一個叫DX Tool的工具把class 檔案轉為.dex格式(Dalvik executable file ),DX Tool是包括在Android SDK內。

3-除了.dex檔案,其他檔案包括Data files和Resources(例如圖片、音樂檔案等等),就要用一個叫AAPT (Android Asset Packaging Tool)的工具把.dex、Data Files和Resources檔案打包(Packaging),而不是改變其格式, AAPT也是包括在Android SDK內。

4-最後,DVM會在Android的AndroidManifest.xml檔案內驗查那一個程式繼承自Activity class,在以上圖片內我們就有HelloWorld 繼承 Activity (HelloWorld extends Activity),所以就會執行HelloWorld內的onCreate() method。

最後,大家在上圖可以明白,雖然Android是用Java寫成,但Android不用JVM,而用DVM,所以Android是沒有main() method的。