安卓将屏幕尺寸定义为正常的、大的、XLarge等。
它会自动在适当文件夹中的静态资源之间进行选择。我需要在我的java代码中包含关于当前设备的数据。DisplayMetrics仅提供有关当前设备密度的信息。没有任何关于屏幕大小的信息。
我确实在grep代码here中找到了ScreenSize枚举,但是这似乎不适用于4.0SDK。有没有办法获得这些信息?
发布于 2012-06-29 04:21:03
将此代码复制并粘贴到您的Activity
中,当它被执行时,它将Toast
设备的屏幕大小类别。
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
String toastMsg;
switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
toastMsg = "Large screen";
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
toastMsg = "Normal screen";
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
toastMsg = "Small screen";
break;
default:
toastMsg = "Screen size is neither large, normal or small";
}
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
发布于 2013-12-29 20:30:40
private static String getScreenResolution(Context context)
{
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
return "{" + width + "," + height + "}";
}
发布于 2016-04-25 13:13:07
我认为这是一段非常简单的代码!
public Map<String, Integer> deriveMetrics(Activity activity) {
try {
DisplayMetrics metrics = new DisplayMetrics();
if (activity != null) {
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("screenWidth", Integer.valueOf(metrics.widthPixels));
map.put("screenHeight", Integer.valueOf(metrics.heightPixels));
map.put("screenDensity", Integer.valueOf(metrics.densityDpi));
return map;
} catch (Exception err) {
; // just use zero values
return null;
}
}
这种方法现在可以在任何地方独立使用。无论您想要获取有关设备屏幕的信息,请执行以下操作:
Map<String, Integer> map = deriveMetrics2(this);
map.get("screenWidth");
map.get("screenHeight");
map.get("screenDensity");
希望这篇文章能对外面的人有所帮助,并且会发现它更容易使用。如果我需要重新更正或改进,请不要犹豫,让我知道!:-)
干杯!
https://stackoverflow.com/questions/11252067
复制相似问题