Android将屏幕大小定义为Normal、Large、XLarge等。它会自动选择合适文件夹中的静态资源。我需要在我的Java代码中使用当前设备的此数据。DisplayMetrics只提供有关当前设备密度的信息,没有关于屏幕尺寸的信息可用。
我在grep代码中找到了ScreenSize枚举类型,这里。但是,在4.0 SDK中似乎无法使用。是否有一种方法可以获取这些信息?
Android将屏幕大小定义为Normal、Large、XLarge等。它会自动选择合适文件夹中的静态资源。我需要在我的Java代码中使用当前设备的此数据。DisplayMetrics只提供有关当前设备密度的信息,没有关于屏幕尺寸的信息可用。
我在grep代码中找到了ScreenSize枚举类型,这里。但是,在4.0 SDK中似乎无法使用。是否有一种方法可以获取这些信息?
Activity
的Java类中,则简单地使用getResources()
将无法工作。您可以在片段中使用getActivity()
或使用传递给相应类的context
。mContext.getResources()
DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
mDensityDpi = displayMetrics.densityDpi;
mDensity = displayMetrics.density;
mDisplayWidth = displayMetrics.widthPixels;
mDisplayHeight = displayMetrics.heightPixels;
String densityStr = "Unknown";
int difference, leastDifference = 9999;
difference = Math.abs(mDensityDpi - DisplayMetrics.DENSITY_LOW);
if (difference < leastDifference) {
leastDifference = difference;
densityStr = "LOW";
}
difference = Math.abs(mDensityDpi - DisplayMetrics.DENSITY_MEDIUM);
if (difference < leastDifference) {
leastDifference = difference;
densityStr = "MEDIUM";
}
difference = Math.abs(mDensityDpi - DisplayMetrics.DENSITY_HIGH);
if (difference < leastDifference) {
leastDifference = difference;
densityStr = "HIGH";
}
difference = Math.abs(mDensityDpi - DisplayMetrics.DENSITY_XHIGH);
if (difference < leastDifference) {
leastDifference = difference;
densityStr = "XHIGH";
}
difference = Math.abs(mDensityDpi - DisplayMetrics.DENSITY_XXHIGH);
if (difference < leastDifference) {
leastDifference = difference;
densityStr = "XXHIGH";
}
difference = Math.abs(mDensityDpi - DisplayMetrics.DENSITY_XXXHIGH);
if (difference < leastDifference) {
densityStr = "XXXHIGH";
}
Log.i(TAG, String.format("Display [h,w]: [%s,%s] Density: %s Density DPI: %s [%s]", mDisplayHeight, mDisplayWidth, mDensity, mDensityDpi, densityStr));
在 Kotlin 中获取屏幕分辨率或屏幕尺寸
fun getScreenResolution(context: Context): Pair<Int, Int> {
try {
val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val metrics = DisplayMetrics()
display.getMetrics(metrics)
val width = metrics.widthPixels
val height = metrics.heightPixels
//Log.d(AppData.TAG, "screenSize: $width, $height")
return Pair(width, height)
} catch (error: Exception) {
Log.d(AppData.TAG, "Error : autoCreateTable()", error)
}
return Pair(0, 0)
}