Monday 4 June 2012

Resource Folder Overview

Category: Android Development

ในทุก Android Project จะมี folder ที่ชื่อว่า "res" ซึ่งภายในยังมี folder ย่อยๆลงไปอีก ซึ่งในแต่ละ folder ย่อยๆนี้จะทำหน้าที่เก็บข้อมูลที่แตกต่างกันออกไป

folder ที่มีชื่อว่า "drawable" (drawable-hdpi, drawable-mdpi และ drawable-ldpi) จะเก็บ images (ส่วนมากเป็น PNG files) และ XML (ระบุถึงสิ่งที่เราจะวาด อย่างเช่น Shapes, Gradients และ Colors)

folder ที่มีชื่อว่า "values" จะทำหน้าที่เก็บข้อมูลที่เป็นข้อคววามทั้งหมด ได้แก่ Strings (ข้อความต่างๆ อย่างเช่น Application Title, Copyright), Arrays, Colors (จะเก็บ Color Constant ต่างๆ),  Dimensions (ไว้สำหรับเก็บขนาดต่างๆของ View ที่เราใช้)

folder ที่มีชื่อว่า "layout" จะทำหน้าที่เก็บ layout ในรูปแบบของ XML files ที่ระบุถึงการแสดงผลบนหน้าจอ

ในตอนที่เราสั่ง Compile Android จะอ่านข้อมูลทั้งหมดใน folder "res" และ สร้างเป็น R.java file ซึ่ง file นี้จะถูกสร้างขึ้นโดยอัตโนมัติ และจะเก็บอยู่ใน folder ที่มีชื่อว่า "gen" เราไม่ควรเข้าไปแก้ไขไฟล์ R.java นี้ เพราะว่าทุกครั้งที่เรา Compile ไฟล์นี้ก็จะถูกสร้างขึ้นมาใหม่ เราใช้ค่า ID ต่างๆใน R.java ในการอ้างถึง resource ต่างๆ อย่างเช่น textView1.setText(R.string.hello) หรือตอนที่เรากำหนด layout สำหรับ Activity เช่น this.setContentView(R.layout.main)

การแยกเก็บข้อมูลไว้ใน resource จะช่วยให้เราแก้ไขข้อมูลได้ง่าย โดยเฉพาะเวลาที่เราต้อง Localize Application ให้ support หลายภาษา เราก็เพียงเข้าไปแก้ใน strings.xml แล้วก็ compile ใหม่ ซึ่งจะช่วยประหยัดเวลาได้มาก

สำหรับการอ้างถึง resource ภายใน XML files (อย่างเช่น ใน layout file) เราจะใช้รูปแบบ @folder/object_id ยกตัวอย่างเช่น android:text="@string/hello" แทนที่จะใช้ R.string.hello

แหล่งที่มา: Creating Android Applications ของ Chris Haseman

No comments:

Post a Comment