Tôi chỉ muốn thêm rằng nếu bạn nhận được thông báo "không dùng nữa" khi sử dụng getDrawable (...), bạn nên sử dụng phương thức sau từ thư viện hỗ trợ.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
Bạn không phải sử dụng getResources() khi sử dụng phương pháp này.
này tương đương với làm một cái gì đó giống như
Drawable mDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
mDrawable = ContextCompat.getDrawable(getContext(),R.drawable.[name]);
} else {
mDrawable = getResources().getDrawable(R.id.[name]);
}
này hoạt động trên cả hai phiên bản Lollipop trước và sau.
Nguồn
2016-08-12 04:20:04
Bạn có cần thêm thứ gì đó khác vào tệp kê khai không? Tôi đã tạo một dự án trống chỉ với dòng mã này trong onCreate và tôi nhận được Tài nguyên $ NotFoundException. Dự án đi kèm với icon.png trong bản đồ hdpi, ldpi và mdpi. – Vincent
Nếu bạn muốn điều này bên ngoài một lớp Activity, bạn sẽ phải tìm một số cách khác để đến được Context nơi getResources() sống; [câu trả lời này đề xuất chuyển nó vào hàm tạo] (http://stackoverflow.com/a/6214567/404960) – rymo
Kể từ phiên bản API 21, phương pháp này không được chấp nhận và bạn nên được thay thế bằng: Drawable drawable = ResourcesCompat.getDrawable (getResources(), trang.getImageId(), null); – Boren