添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • Standard Java Naming Conventions
  • System.out.println()的用法和意思
  • Where is main() method in Android?
  • LibGDX - Splash & Menu Screen

  • LibGDX: World, Texture, Background, Camera, Viewport, Screen & OpenGL
  • LibGDX: Texture, TextureRegion, SpriteBatch & Sprite
  • UML(Unified Modeling Language): Class Diagram
  • Type Casting, Upcasting & Downcasting
  • @Override的用法和意思
  • LibGDX: Scene2d & Graphical User Interface(GUI)
  • LibGDX: Splash Screen
  • LibGDX: Texture Packer
  • LibGDX: BitmapFonts, JSON & Skin
  • Android: R.java File
  • Android: onClick事件的5種實現方式
  • LibGDX: Game Menu Screen
  • LibGDX: Advanced Game Menu Screen (using Abstract Screen)
  • LibGDX: Disposable Interface
  • Java & LibGDX: super keyword
  • LibGDX: Advanced Game Menu Screen (using AssetManager)
  • Java: Array, Arrays, List, ArrayList & LibGDX: Array
  • LibGDX: File I/O (Preferences)
  • LibGDX: Game Level Selection Screen
  • LibGDX: Advanced Game Level Selection Screen (using AssetManager)
  • LibGDX - Tiled 2D Platform Game

  • LibGDX: Lifecylce (Render() Method)
  • LibGDX: Delta Time
  • LibGDX: Animation & Spritesheet
  • LibGDX: Keyboard, Mouse & Touch Screen Control
  • Input Control (Polling VS Event Driven Input)
  • LibGDX: Tiled (Background and Foreground)
  • LibGDX: Jumping Action
  • LibGDX: Tiled (Collision Detection)
  • LibGDX: Tiled (Bullet Class)
  • LibGDX: Audio (Sound & Music)
  • LibGDX: Tiled (Scrollable Background with Camera & HUD)
  • LibGDX: WorldController & WorldRenderer Class
  • LibGDX: Install & Setup Android Studio IDE
  • LibGDX: Use Android Studio to Run Java Hello World
  • LibGDX: Use Android Studio to Run LibGDX Hello World
  • Adobe Illustrator: Basic Components Part 1
  • Adobe Illustrator: Basic Components Part 2
  • Adobe Illustrator: BlackJack Table & Cards
  • LibGDX: Blackjack Animation
  • LibGDX: Interpolation
  • Java: toString() Method
  • Java: Blackjack Shuffle Methods
  • LibGDX: Blackjack Shuffle Method
  • Java: Blackjack Card Game
  • LibGDX - Others

  • Making and Displaying App Icon
  • LibGDX: Displaying Traditional and Simplified Chinese Characters
  • LibGDX: Handling Different Screen Resolutions
  • Unity Game Engine & C#

  • Visual Studio: C# Hello World
  • Unity: C# Hello World
  • Unity: Handling Different Screen Resolutions
  • Unity: Life Cycle
  • Unity: StartCoroutine, StopCoroutine, IEnumerator & Yield
  • Unity: Splash Screen
  • Unity: Fonts, Traditional and Simplified Chinese Characters
  • Unity: GameObject, Class Object, new & Instantiate
  • Unity: Start Screen with Glowing Animated Button
  • Unity: C# Get & Set Modifier
  • Unity: Delegates & Events
  • Unity: File I/O, Read & Write Text File & PlayerPrefs
  • Unity: Game Level Selection Screen
  • Unity: Game Menu Screen & ScreenManager
  • Unity: Encrypt and Decrypt Text File
  • Unity: Options Menu Screen
  • Unity: Convert Numbers Image to Custom Font
  • Unity: Blackjack Card Game - Part 1 (Full Game)
  • Unity: Blackjack Card Game - Part 2
  • Unity: Blackjack Card Game - Part 3
  • Unity: Blackjack Card Game - Part 4
  • Unity: Blackjack Card Game - Part 5
  • Unity: Blackjack Card Game - Part 6
  • Unity: Blackjack Card Game - Part 7
  • 第20節 - Android: R.java File

    這一節我會介紹Android的R.java檔案。當我們明白R.java的用法和原理,我們就可以進入下一節( 第21節 - Android: onClick事件的5種實現方式 ),因為每一個Android元件(例如: Button)和R.java是有直接關係的。

    首先建立一個新的Android Project,預設是一個簡單的 "Hello world!" 程式,在gen/com.hkprogram.mydemo20/內就會產生一個R.java檔案。

    注意, com.hkprogram.mydemo20 就是我們建立Android Project時的Package Name,如下圖:

    1- R.java儲存在gen/com.hkprogram.mydemo20內。

    R.java的工用

    R.java檔案稱為資源類型檔,是用來記錄程式中所有的 資源識別碼 。它是由系統編譯自動產生。

    每次當我們在.xml檔案上建立一個介面元件(例如: Button),然後在屬性欄設定它的id(例如: button1 ),R.java檔案內就會自動產生一個資源識別碼,資源識別碼是一組16進位的數字,但這數字不容易記下來用,所以就有一個與id名稱一樣的資源識別碼,方便使用。

    例如: public static final int button1 = 0x7f09003f ;

    R.java檔案就好像一條橋樑,它把Graphical Layout(例如:activity_main.xml)檔案和背後的Java程式(例如:MainActivity.java)連接起來,這樣做我們就可以把屏幕上的任何介面元件連接背後的程式,為介面元件作出控制,如下概念圖:

    @+id/元件名稱 VS @id/元件名稱

    當我們在Graphical Layout(例如:activity_main.xml)檔案上新增一個介面元件,須要在屬性欄設定它的id,例如:@+id/button1或@id/button1。

    id屬性只能接受資源類型的值,也就是必須以@開頭的值,例如:@id/button1和@+id/button1。

    如果在@後面使用“+”,表示系統會自動在R.java文件中生成相應的int類型變數。 變數名就是“/”後面的值,例如,@+id/button1會在R.java文件中生成int button1 = value,其中​​value是一個十六進制的數。 如果button1在R.java中已經存在同名的變數,就不再生成新的變數,而該組件會使用這個已存在的變數的值。

    也就是說,如果使用@+id/button1,當R.java中存在名為button1變數時,則該組件會使用該變數的值作為標識。 如果不存在該變數,則添加一個新的變數,並為該變數增加相應的值(不會重複)。

  • 首先在activity_main.xml建立一個TextView元件。
  • 另外在activity_main.xml建立一個Button元件。
  • 在Button屬性欄新增一個id為@+id/button1。
  • 在TextView屬性欄新增一個id為@+id/textView1。
  • R.id.button1

    我在 第9節 - System.out.println()的用法和意思 介紹過System 是一個final class,如果一個Class定義為final,就代表這個Class不能被其他Class繼承(extends)。所以R也是一個final class不能被其他Class繼承(extends)。

    R Class內有不同的inner Class,例如: array, color, drawable, id, layout和string。我們已 id 為例子,id也是final class,而static代表id是R的 靜態內部類別 (static inner class),意思是大家可以用R.id而不可以用 成員內部類別 (member inner class) e.g. r.id是不可以的!

    inner class id內有三個變數(linearlayout1, button1和textView1),它們也是static final,則是它們也是 類別變數 (Class variable),意思是大家可以用id.button1,而不可以用 成員變數 (member variable) e.g. id_member.out 是不可以的! (假設id_member是id的成員變數)。

    最後,把 R.id id.button1 合併,就成為 R.id.button1 。R.id.button1就可以在Android的任何地方使用。

    1- R.id.button1的由來。

  • 首先在activity_main.xml建立一個TextView元件。
  • 另外在activity_main.xml建立一個Button元件。
  • 在Button屬性欄新增一個id為@+id/button1。
  • 再把Button顯示的字串改為 "Click me"
  • 在TextView屬性欄新增一個id為@+id/textView1。
  • 開啟 gen/com.hkprogram.mydemo20/R.java 檔案。
  • R.java檔案內就會自動產生對應的資源識別碼public static final int button1 = 0x7f09003f ;。
  • R.java檔案內就會自動產生對應的資源識別碼public static final int textView1 = 0x7f090040 ;。
  • 系統提供 findViewByID() 方法,它可由id找到指定的元件,findViewByID()的語法如下:
    findViewByID(R.id.識別名稱);

    例如我們的TextView介面元件:
    findViewByID(R.id.textView1);

    在MainActivity.java內,我們就可以把activity_main.xml檔案的textView1介面元件與背後的Java程式MainActivity.java( textView )連接起來。
  •