这是一个非常简单的问题,但我没有找到答案:/如何快速访问屏幕分辨率(宽度、高度)的整数值?
我尝试了这个方法,但在我的模拟器上总是显示为零:
DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels / 2;
在我的情况下,我想动态创建一个带有tableRows的表格,每个tableRow包含两列。这些列都应该占据屏幕一半的宽度。
有人能给我指点一下吗?
这是一个非常简单的问题,但我没有找到答案:/如何快速访问屏幕分辨率(宽度、高度)的整数值?
我尝试了这个方法,但在我的模拟器上总是显示为零:
DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels / 2;
在我的情况下,我想动态创建一个带有tableRows的表格,每个tableRow包含两列。这些列都应该占据屏幕一半的宽度。
有人能给我指点一下吗?
trashkalmar的回答是正确的。
但是,结果将具体取决于活动上下文。如果您想要整个设备屏幕分辨率:
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;
请注意,结果还取决于当前设备的方向。
您可以使用以下方法获取屏幕指标:
Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = d.getWidth();
int height = d.getHeight();
1.在活动中使用此代码即可获取屏幕宽度和高度像素。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay()
.getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
2. 这也可以被使用,但需要 API 级内联检查。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(size);
int width2 = size.x;
int height2 = size.y;
} else {
int width2 = display.getWidth();
int height2 = display.getHeight();
}
3. 当你没有活动但有上下文时,请使用此选项
WindowManager wm = (WindowManager) context.getSystemService(
Context.WINDOW_SERVICE);
Display display1 = wm.getDefaultDisplay();
Point size1 = new Point();
int width1;
int height1;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display1.getSize(size1);
width1 = size1.x;
height1 = size1.y;
} else {
width2 = display.getWidth();
height2 = display.getHeight();
}
我使用以下内容:
int scrWidth = getWindowManager().getDefaultDisplay().getWidth();
int scrHeight = getWindowManager().getDefaultDisplay().getHeight();
dm.widthPixels
没有被初始化,所以它的值为零,0除以2也是零...你应该尝试类似mView.getContext().getResources().getDisplayMetrics()
这样的东西。 - Armin