2010-04-15 4 views
9

Android AppWidget'ta çalışma zamanında ekran yoğunluğunu belirlemem gerekiyor. Bir HDPI öykünme aygıtı (avd) kurdum. Düzenli çalıştırılabilir proje kurmak ve onCreate yöntemle bu kodu eklerseniz:Android'de bir AppWidget'ten doğru DisplayMetrics'i nasıl edinebilirim?

DisplayMetrics dm = getResources().getDisplayMetrics(); 
Log.d("MyTag", "screen density " + dm.densityDpi); 

Bu beklendiği gibi "ekranı yoğunluğunu 240" çıkarır.

Ancak, bir AppWidget projesi kurmak ve OnUpdate yönteme, bu kodu eklemek edin:

DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
Log.d("MyTag", "screen density " + dm.densityDpi); 

Bu "ekran yoğunluğu 160" verir. Hata ayıklayıcısını bağladığımı fark ettim, buradaki Kaynaklar nesnesinin mDefaultDisplay üyesi, AppWidget durumunda null.

Benzer şekilde, AppWidget uygulamasında context.getResources() öğesinden alınan Kaynaklar nesnesini kullanarak çalışma zamanında bir kaynak alırsam, ekran yoğunluğuna bağlı olarak yanlış bir kaynak döndürür. Örneğin, mdpi için bir 60x60px çekilebilir ve hdpi için çekilebilir bir 80x80 var. Bu Drawable nesneyi context.getResources(). GetDrawable (...) kullanarak alırsam, 60x60 sürümünü döndürür.

Çalışma zamanında kaynaklarla bir AppWidget içeriğinden doğru şekilde ilgilenmenin herhangi bir yolu var mı?

Teşekkürler!

cevap

1

Bu bir hata gibi görünüyor. Hatayı gösteren örnek bir proje oluşturabilirseniz, Android issue tracker numaralı makaleye bir sorun gönderin. Bunu düşünüyorsanız, konuyu işaret eden bir açıklama ekleyin.

+0

Hmmm. Hiçbir şey yapmamak için basit bir widget oluşturdum ancak bu hatayı gösterdim ve HDPI emülatör aygıtında 240 doğru görüntüleniyor. Geri dönüp diğer widget'ımın nesi farklı olduğunu anlamaya çalışacağım. Baktığın için teşekkürler. – ManicBlowfish

+4

Aha. Bildirgemde etiketini kaçırıyordum. Min sdk sürümünü bir şeye ayarladıysam> = 4 Çalışma zamanında doğru ekran yoğunluğunu elde ederim. – ManicBlowfish