Tổ chức và truy cập tài nguyên Android

0
291

Có nhiều mục khác nhau, những thứ mà bạn sẽ sử dụng để tạo ra một ứng dụng Android tốt. Ngoài việc coding ứng dụng, bạn còn phải chăm sóc các tài nguyên khác như nội dung tĩnh mà mã của bạn sử dụng, chẳng hạn như bitmaps, colors, layout definitions, user interface strings, animation instructions và nhiều thứ khác. Các tài nguyên này luôn được duy trì riêng biệt ở các thư mục con khác nhau trong thư mục res / của project.

Hướng dẫn này sẽ giải thích cách bạn có thể tổ chức các tài nguyên ứng dụng của bạn, chỉ định các tài nguyên thay thế và truy cập chúng trong các ứng dụng của bạn.

Tổ chức tài nguyên trong Android Studio

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java  
      res/
         drawable/  
            icon.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml
STT Thư mục & loại tài nguyên
1 anim/

XML files để xác định các thuộc tính hoạt hình. Chúng được lưu trong thư mục res/anim/ và được truy cập từ lớp R.anim.

2 color/

XML files để xác định danh sách  màu sắc. Chúng được lưu trong thư mục res/color/ và được truy cập từ lớp R.color.

3 drawable/

Image files như .png, .jpg, .gif hoặc XML và chúng được biên dịch thành bitmaps, state lists, shapes, animation drawable. Chúng được lưu trong thư mục res/drawable/ và được truy cập từ lớp R.drawable.

4 layout/

XML files định nghĩa bố cục giao diện người dùng. Chúng được lưu trong thư mục res/layout/ được truy cập từ lớp R.layout.

5 menu/

XML files xác định menu của ứng dụng,chẳng hạn như Options Menu, Context Menu, or Sub Menu. Chúng được lưu trong thư mục res/menu/ được truy cập từ lớp R.menu.

6 raw/

Arbitrary files để lưu vào raw form. Bạn cần gọi phương thức  Resources.openRawResource() với ID, nó là R.raw.filename để mở raw files.

7 values/

XML files có chứa các giá trị đơn giản , chẳng hạn như strings, integers, hay colors. Ví dụ, đây là một số quy ước tên tập tin dành cho các tài nguyên bạn có thể tạo trong thư mục này −

  • arrays.xml cho các tài nguyên mảng, được truy cập từ lớp R.array.
  • integers.xml cho các tài nguyên integers, được truy cập từ lớp R.integer.
  • bools.xml cho các tài nguyên boolean, được truy cập từ lớp R.bool.
  • colors.xml cho các giá trị mà sắc, được truy cập từ lớp R.color.
  • dimens.xml cho các giá trị kích thước, được truy cập từ lớp R.dimen.
  • strings.xml cho các giá trị chuỗi, được truy cập từ lớp R.string.
  • styles.xml cho styles, được truy cập từ lớp R.style.
8 xml/

Arbitrary XML files nó có thể đọc lúc chạy từ việc gọi Resources.getXML(). You can save various configuration files here which will be used at run time.

Tài nguyên thay thế

Ứng dụng của bạn nên cung cấp các tài nguyên thay thế để hỗ trợ cấu hình thiết bị cụ thể. Ví dụ: bạn nên khai báo các tài nguyên có thể thu thập thay thế khác (ví dụ: hình ảnh) để có độ phân giải màn hình khác nhau và tài nguyên chuỗi thay thế cho các ngôn ngữ khác nhau. Khi chạy, Android sẽ phát hiện cấu hình thiết bị hiện tại và tải các tài nguyên thích hợp cho ứng dụng của bạn.

Để xác định lựa chọn thay thế cho một tập các tài nguyên, hãy làm theo các bước sau  −

  • Tạo một thư mục trong res/ tên được đặt trong form <resources_name>-<config_qualifier>. Ở đây resources_name sẽ là bất kỳ nguồn nào được đề cập trong bảng ở trên, như bố cục, bảng vv. Qualifier sẽ chỉ định một cấu hình cá nhân mà các tài nguyên này sẽ được sử dụng. Bạn có thể kiểm tra tài liệu cho một danh sách đầy đủ của các loại tài nguyên khác nhau.
  • Lưu các tài nguyên thay thế tương ứng trong thư mục mới này. Các tệp tài nguyên của chúng phải được đặt tên chính xác giống như tệp tin tài nguyên mặc định như thể hiện trong ví dụ dưới đây, nhưng các tệp này sẽ có nội dung cụ thể để thay thế. Ví dụ mặc dù tên tập tin hình ảnh sẽ giống nhau nhưng đối với màn hình có độ phân giải cao, độ phân giải của nó sẽ cao.

Dưới đây là ví dụ xác định hình ảnh cho màn hình mặc định và hình ảnh thay thế cho màn hình có độ phân giải cao.

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java   
         res/
            drawable/  
               icon.png
               background.png
         drawable-hdpi/  
            icon.png
            background.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml

Dưới đây là một ví dụ khác xác định bố cục cho một ngôn ngữ mặc định và cách bố trí thay thế bằng ngôn ngữ tiếng Ả rập.

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java   
      res/
         drawable/  
            icon.png
            background.png
         drawable-hdpi/  
            icon.png
            background.png  
         layout/  
            activity_main.xml
            info.xml
         layout-ar/
            main.xml
         values/  
            strings.xml

Truy cập tài nguyên

Trong quá trình phát triển ứng dụng của bạn, bạn sẽ cần phải truy cập tài nguyên đã xác định trong mã của mình hoặc trong tệp XML bố trí của bạn. Phần sau sẽ giải thích cách truy cập tài nguyên của bạn trong cả hai kịch bản –

Truy cập tài nguyên trong Code

Khi ứng dụng Android của bạn được biên soạn, một lớp R được tạo ra, Chứa các ID tài nguyên cho tất cả các tài nguyên có sẵn trong thư mục res / của bạn. Bạn có thể sử dụng lớp R để truy cập tài nguyên đó bằng cách sử dụng thư mục con và tên tài nguyên hoặc ID tài nguyên trực tiếp.

Ví dụ:

Để truy cập res/drawable/myimage.png và đặt một ImageView bạn sẽ sử dụng code

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

Dòng đầu R.id.myimageview để lấy ImageView xác định bởi id myimageview trong Layout file. Dòng hai R.drawable.myimage để lấy image với tên myimage có sẵn trong drawable sub-dưới thư mục /res.

Ví dụ:

Hãy xem xét ví dụ tiếp theo res/values/strings.xml có định nghĩa sau –

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string  name="hello">Hello, World!</string>
</resources>

Bây giờ bạn có thể thiết lập văn bản trên một đối tượng TextView bằng ID sử dụng một ID tài nguyên như sau –

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

Ví dụ:

Xem xét bố cục res/layout/activity_main.xml với định nghĩa sau –

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:orientation="vertical" >
   
   <TextView android:id="@+id/text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a TextView" />

   <Button android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a Button" />
      
</LinearLayout>

Mã ứng dụng này sẽ tải bố cục này cho một Activity, trong phương thức onCreate () như sau –

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

Truy cập tài nguyên trong XML

Xem xét các tài nguyên XML res/values/strings.xml file bao gồm một tài nguyên màu sắc và một tài nguyên chuỗi –

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

Bây giờ bạn có thể sử dụng các tài nguyên này trong tệp bố cục sau để thiết lập màu văn bản và chuỗi văn bản như sau –

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:textColor="@color/opaque_red"
   android:text="@string/hello" />

Bạn có thể quay lại ví dụ “Hello World” để tìm hiểu những phần trên. Chúc bạn thành công!

This site uses Akismet to reduce spam. Learn how your comment data is processed.