Bu çağrı diyorsunuz zaman noktasında bağımsızdır:
...
Point dimensions = getDisplayDimensions(context);
int width = dimensions.x;
int height = dimensions.y;
...
@NonNull
public static Point getDisplayDimensions(Context context)
{
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
int screenWidth = metrics.widthPixels;
int screenHeight = metrics.heightPixels;
// find out if status bar has already been subtracted from screenHeight
display.getRealMetrics(metrics);
int physicalHeight = metrics.heightPixels;
int statusBarHeight = getStatusBarHeight(context);
int navigationBarHeight = getNavigationBarHeight(context);
int heightDelta = physicalHeight - screenHeight;
if (heightDelta == 0 || heightDelta == navigationBarHeight)
{
screenHeight -= statusBarHeight;
}
return new Point(screenWidth, screenHeight);
}
public static int getStatusBarHeight(Context context)
{
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
return (resourceId > 0) ? resources.getDimensionPixelSize(resourceId) : 0;
}
public static int getNavigationBarHeight(Context context)
{
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
return (resourceId > 0) ? resources.getDimensionPixelSize(resourceId) : 0;
}
hilesi ekran ölçümlerini (durum çubuğu modulo istediğini) ve "gerçek ölçümlerini" karşılaştırır yani, cihazın fiziksel pikselleri hangisidir.
Durum çubuğunun yüksekliği, daha sonra gerçekleşmemişse, geçici olarak çıkarılır.
(benim testlerde geri içeren gezinti çubuğu (ve ev düğmeleri) zaten çıkarılmıştır.)
Bu çalışırsa, yalnızca benim sorun çözüldü olmazdı ama kodumu çok azaltılacak. Ben büyük bir geri dönen olmadı görünümleri ile birçok sorunları yaşadım, fillParent ve MatchParent kullanıldı. –
Bu bana tüm ekran ölçümlerini (daha önce aldığım aynı değerler) veriyor, ancak MATCH_PARENT, MATCH_PARENT ve üst ekranın kullanılabilecek kısmı olan bir galeri boyutumu almamı sağladı. istediğimi almak için. Çok teşekkür ederim, bunu uzun zamandır çözmeyi deniyorum. –
Arama yapmak için güzel ipucu onWindowFocusChanged() '. Başlangıçta görüşlerin ölçülmesini sağlayan bir yöntem bulmak için çaresizdim. –