Giống như các tài nguyên khác trong Android, drawables được truy cập thông qua 'R' lớp, đó là chỉ tập hợp các lớp tĩnh chứa các trường số nguyên tĩnh. Không có "có được tất cả các tên drawable" metthod (ít nhất là tôi không biết nó) ngoài việc sử dụng sự phản chiếu.
Bạn sẽ cần danh sách các id có thể kéo để ngẫu nhiên. Bạn có thể tự động điền vào danh sách này bằng cách sử dụng phản ánh:
import java.lang.reflect.Field;
...
Field[] fields = R.drawable.class.getFields();
List<Integer> drawables = new ArrayList<Integer>();
for (Field field : fields) {
// Take only those with name starting with "fr"
if (field.getName().startsWith("fr")) {
drawables.add(field.getInt(null));
}
}
Bằng cách này bạn sẽ có danh sách các id có thể thu hút bạn quan tâm. Bạn có thể sử dụng các id đó sau này, nơi bạn thường sử dụng, ví dụ: R.drawable.someResource
Nguồn
2012-02-22 20:55:05
Tuyệt vời! field.get (i) sẽ nhận được id, int i có thể được ngẫu nhiên với fields.size() làm giá trị lớn nhất. Cảm ơn!! –
Tomasz, nhờ câu trả lời của bạn, tôi đã có thể viết https://play.google.com/store/apps/details?id=happyworx.nl.Applez. Cảm ơn bạn! –
Câu trả lời này vẫn được cập nhật hoặc có bất kỳ phương pháp tốt hơn nào xuất hiện trong ba năm qua không? – SuperBiasedMan