2011-12-19 33 views
11

Ice Cream Sandwich içeren cihazlar ekran tuşlarını kullanabilir, bu da bazı ekranların bu tuşlar tarafından alındığı anlamına gelir. Gerçek ekran çözünürlüğünü elde etmem gerekiyor. Çözünürlük, yazılım tuşları tarafından kapılan alan kadar değil.Ice Cream Sandwich üzerinde gerçek ekran çözünürlüğünü elde edin.

Ben aşağıdaki denedim

, ama ikisi de çalışır:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
Log.d("SCREEN RES", "Width: " + width + ". Height: " + height); 

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
height = metrics.heightPixels; 
width = metrics.widthPixels; 
Log.d("SCREEN RES", "Width: " + width + ". Height: " + height); 

Çıktı İşte:

12-19 20:18:42.012: D/SCREEN RES(20752): Width: 1196. Height: 720 
12-19 20:18:42.012: D/SCREEN RES(20752): Width: 1196. Height: 720 

gerçek ekran çözünürlüğü 1280 x 720 piksel, değil 1196 x 720 piksel.

Herhangi bir fikrin var mı?

Ben app tam ekran yapmak için aşağıdaki kodu kullanıyorum

Düzenleme:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
+0

Sonuç bırakılması: http://stackoverflow.com/questions/11824193/htc-sensation-real-resolution – thecr0w

cevap

9

API bir uygulama kullanabilirsiniz piksel sayısını verir, bu nedenle bu doğru sonucudur . aşağıdaki gibi

API düzeyinde 17 (Android 4.2 Jelly Bean) Gönderen
+0

ben koyarsanız ne Uygulama tam ekran modunda böyle mi? .. 'GetWindow() getDecorView() setSystemUiVisibility (2);'. Bu, yazılım tuşlarını kaldırır ve tüm ekranı ve 1280 piksel genişliğini kullanmamı sağlar. –

+0

Önceki yorumumu düzenleyemiyorum, ancak 2 == 'View.SYSTEM_UI_FLAG_HIDE_NAVIGATION'. –

+9

@Romain Guy - Uygulamanın ekranın tüm boyutlarını bilmesi gereken durumlar var, ancak bundan daha az kullanabiliyor. Örneğin, tasarımcı, uygulama alanında kullanılabilen değil, cihaz ekranında ortalanmış bir şey oluşturmak isteyebilir. Dolayısıyla, uygulamanın kullanabileceği piksel sayısını döndüren bir API'ye ihtiyaç duyulurken, fiziksel ekran boyutlarını döndüren bir API'ye de ihtiyaç duyulur. –

1

, ekranın gerçek boyutunu alabilirsiniz:

Point size = new Point(); 
Display display = getWindowManager().getDefaultDisplay(); 
display.getRealSize(size); 

size şimdi tercihe dayalı gösterge boyutu içerecektir (yani x olacak. kullanıcıya/sağ akrabası değil cihaz) gerçek çözünürlüğü elde etme hakkında