Tespit 7 inç ve 10 inç tablet programlı
Bir şekilde programlı olarak uygulama yüklü cihaz 7 inç bir tablet veya 10 inç bir tablet var mı yok mu?
CEVAP
DisplayMetrics
uygulaması üzerinde çalıştığı ekran hakkında bilgi bir sürü almak için kullanabilirsiniz.
İlk DisplayMetrics
metrik bir nesne oluşturuyoruz:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Bu, Bilgi boyutu için gerekli görüntü elde edebiliriz:
int widthPixels = metrics.widthPixels;
int heightPixels = metrics.heightPixels;
Bu genişliği mutlak değer ve piksel cinsinden yüksekliği, Galaxy SIII için çok 1280 x 720, Galaxy Nexus vs dönecektir.
Bu Android cihazlar üzerinde çalışıyoruz, genellikle yoğunluğu bağımsız piksel olarak çalışmayı tercih olarak, kendi dip genellikle yararlı değildir.
Olsun density
ekranı kullanarak metrics
tekrar, şeklinde bir ölçek faktörü için cihaz, hangi dayalı Android Design Resources mdpi
, hdpi
vb.
float scaleFactor = metrics.density;
Bu sonuç, bağımsız piksel yoğunluğu miktarı hesaplayabiliriz belli bir yükseklik veya genişlik için vardır.
float widthDp = widthPixels / scaleFactor
float heightDp = heightPixels / scaleFactor
Bu aldığım sonuç Her ekran için göreli dp veren Android Configuration examples, boyutunu birlikte çalıştığınız ne karar vermenize yardımcı olacaktır:
- 320dp: tipik bir telefon ekran, 320x480, 480 x 800 piksel 240 x 320 ldpi mdpi hdpi, vb).
- 480dp: Çizgi gibi ergen bir tablet (480 x 800 piksel mdpi).
- 600dp: 7” (600x1024 mdpi) tablet.
- 720dp: 10” tablet (720x1280 mdpi, 800x1280 mdpi, vb).
Kullanarak Yukarıdaki bilgiler, biz biliyoruz ki Eğer en küçük genişlik cihaz daha büyüktür 600dp, cihaz 7" tablet, eğer daha büyük 720dp, cihazın 10" tablet.
En küçük genişlik Math
sınıf min
fonksiyonu ile heightDp
widthDp
smallestWidth
dönüş geçiş yapabiliriz.
float smallestWidth = Math.min(widthDp, heightDp);
if (smallestWidth > 720) {
//Device is a 10" tablet
}
else if (smallestWidth > 600) {
//Device is a 7" tablet
}
Ancak, bu değil her zaman vermek sen tam bir eşleşme, özellikle işçi ile belirsiz tabletler olabilir yanlış tanıtıyor yoğunluk olarak hdpi zaman değil, ya da belki sadece 800 x 480 piksel henüz hala bir 7" ekran.
Ayrıca, bu yöntemler, gerek duyarsan bilmek tam boyutlardaki bir cihazda inç, bunu da kullanarak metrics
yöntem için kaç piksel var başına inç ekran.
float widthDpi = metrics.xdpi;
float heightDpi = metrics.ydpi;
Toplam kaç cihaz her inç ve piksel miktarı bu Bilgi kaç cihaz çalışmak için kullanabilirsiniz.
float widthInches = widthPixels / widthDpi;
float heightInches = heightPixels / heightDpi;
Bu inç cihaz yüksekliğini ve genişliğini döndürür. Bu yine her zaman ne olduğunu belirlemek için yararlı değil, bir cihazın reklamı boyutu olarak çapraz, hepimizin yükseklik ve genişlik.
Ancak, biz de biliyoruz ki verilen yüksekliği Üçgen ve genişliği koyarız, Pisagor teoremi çalışma uzunluğu hipotenüs (bu durumda, boyutu diyagonal ekran).
//a² b² = c²
//The size of the diagonal in inches is equal to the square root of the height in inches squared plus the width in inches squared.
double diagonalInches = Math.sqrt(
(widthInches * widthInches)
(heightInches * heightInches));
Bu, cihazın bir tablet olup olmadığını yapabiliriz:
if (diagonalInches >= 10) {
//Device is a 10" tablet
}
else if (diagonalInches >= 7) {
//Device is a 7" tablet
}
Ve nasıl çalıştığınızı hesaplayın.
™ : Çalışan bir masaüstü tarayıcı üzer...
Nasıl bir uygulama simgesi Android pro...
Android: Görünüm.KİMLİK çatışmaları ön...
Eğer bir WordPress kullanmak bir ileti...
Ne kadar programlı ve bir Java sınıf d...