Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách lưu trữ ID resource drawable trong mảng XML values trong Android

Giới thiệu

Hướng dẫn này trình bày cách định nghĩa mảng chứa ID của các drawable resource (R.drawable.*) trong file XML values, sau đó truy xuất và sử dụng trong code Java.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Tạo file mảng resource (res/values/arrays.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array name="random_images">
        <item>@drawable/image1</item>
        <item>@drawable/image2</item>
        <item>@drawable/image3</item>
    </integer-array>
</resources>

Bước 3: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <ImageView
        android:id="@+id/iv1"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_margin="8dp"
        android:contentDescription="@string/app_name" />
    <ImageView
        android:id="@+id/iv2"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_margin="8dp"
        android:contentDescription="@string/app_name" />
    <ImageView
        android:id="@+id/iv3"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_margin="8dp"
        android:contentDescription="@string/app_name" />
</LinearLayout>

Bước 4: Viết logic xử lý (src/MainActivity.java)

package app.com.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    ImageView iv1, iv2, iv3;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        iv1 = findViewById(R.id.iv1);
        iv2 = findViewById(R.id.iv2);
        iv3 = findViewById(R.id.iv3);
        
        // Lấy TypedArray từ resource
        TypedArray images = getResources().obtainTypedArray(R.array.random_images);
        
        // Lấy resource ID tại từng vị trí
        iv1.setImageResource(images.getResourceId(0, -1));
        iv2.setImageResource(images.getResourceId(1, -1));
        iv3.setImageResource(images.getResourceId(2, -1));
        
        // Quan trọng: recycle() để giải phóng bộ nhớ
        images.recycle();
    }
}

Bước 5: Cấu hình Manifest (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Lưu ý quan trọng

  • Sử dụng integer-array với item là @drawable/ten_file
  • Truy xuất bằng obtainTypedArray() và getResourceId(index, defaultValue)
  • Luôn gọi recycle() sau khi dùng xong TypedArray để tránh rò rỉ bộ nhớ
  • File ảnh cần đặt trong res/drawable/ với tên image1, image2, image3

Chạy ứng dụng

Kết nối thiết bị Android, nhấn Run trong Android Studio. Ba ImageView sẽ hiển thị các ảnh từ mảng resource.

Cách lưu trữ ID resource drawable trong mảng XML values trong Android