Resimin görüntüsü res/drawable/test.png
(R.drawable.test). Bu resmi Drawable
kabul eden bir işleve iletmek istiyorum.
(örn mButton.setCompoundDrawables()) Kaynak oluşturulabilir Çizim
Drawable
bir görüntü kaynağı dönüştürmek için?
Resimin görüntüsü res/drawable/test.png
(R.drawable.test). Bu resmi Drawable
kabul eden bir işleve iletmek istiyorum.
(örn mButton.setCompoundDrawables()) Kaynak oluşturulabilir Çizim
Drawable
bir görüntü kaynağı dönüştürmek için?
Etkinliğiniz, getResources yöntemine sahip olmalıdır. Do:
Drawable myIcon = getResources().getDrawable(R.drawable.icon);
görüntü olarak ayarlanır görünümden çekilebilir almaya çalışıyorsanız,
ivshowing.setBackgroundResource(R.drawable.one);
sonra çekilebilir aşağıdaki kodla sadece boş değer dönecektir ...
Drawable drawable = (Drawable) ivshowing.getDrawable();
Bu nedenle, belirli bir görünümden çekilebilir olanı almak istiyorsanız, görüntüyü aşağıdaki kodla ayarlamak daha iyidir.
ivshowing.setImageResource(R.drawable.one);
ancak o zaman çekilebilir tam olarak dönüştürülmüş olacaktır.
getDrawable (int id)
yöntem Bunun yerine Kod böyle bir şey olmazdı API 21+
için getDrawable (int id, Resources.Theme theme)
kullanmalıdır 22.
API olarak amortismana tabi tutulur.
Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
myDrawable = context.getResources().getDrawable(id);
}
neden her API için boş değil? Artı: En iyi seçeneğin boş olduğundan emin misin? – jonathanrz
GetDrawable (int id, Resources.Theme teması) API 21'e kadar gelmedi. – ChrisStillwell
Bu kod kullanımdan kaldırılmıştır.
Drawable drawable = getResources().getDrawable(R.drawable.icon);
kullanın bu instad.
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
Temanın belirtilen bağlamdan uygulanacağının farkında olun. Hiçbir temanın kullanılmadığından emin olmak istiyorsanız 'ResourcesCompat.getDrawable (getResources(), R.drawable.icon, null);' (3. paramın isteğe bağlı bir Tema örneği olduğu) kullanabilirsiniz. – vaughandroid
Sadece getDrawable (...) kullanırken mesaj "deprecated" alıyorsanız eğer yerine destek kitaplığından aşağıdaki yöntemi kullanması gerektiğini eklemek istiyorum.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
Bu yöntemi kullanırken getResources() yöntemini kullanmanız gerekmez.
Bu Bu, hem öncesi ve sonrası Lollipop sürümlerinde çalışır
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]);
}
böyle bir şey yaptığını eşdeğerdir.
Örneğin bildirime başka bir şey eklemeniz gerekiyor mu? OnCreate'da sadece bu kod satırıyla boş bir proje oluşturdum ve Kaynaklar $ NotFoundException aldım. Proje hdpi, ldpi ve mdpi haritalarında icon.png ile geldi. – Vincent
Bunu bir Etkinlik sınıfının dışında görmek isterseniz, getResources() öğesinin bulunduğu İçerik'e ulaşmak için başka bir yol bulmanız gerekir; [Bu cevap yapıcıya aktarılmasını önerir] (http://stackoverflow.com/a/6214567/404960) – rymo
API sürümü 21'den itibaren bu yöntem kullanımdan kaldırılmıştır ve şu şekilde değiştirilmelidir: Çizim çekilebilir = ResourcesCompat.getDrawable (getResources(), sayfa.getImageId(), boş); – Boren