在 onMeasure 或其他位置需螢幕尺寸時,透過 WindowManager 取得 DisplayMetrics 即可。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels;
int screenHeight = metrics.heightPixels;
@Override
protected void onMeasure(int widthSpec, int heightSpec) {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels - findViewById(R.id.flag).getHeight();
setMeasuredDimension(width, height);
}
widthPixels/heightPixels 為實際像素尺寸。density、densityDpi 可用於 dp/px 轉換。WindowMetricsCalculator 取得更精確視窗尺寸。