SORU
24 ŞUBAT 2013, Pazar


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
28 ŞUBAT 2013, PERŞEMBE


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. DPI scales

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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011