我正在使用此代码来获取屏幕分辨率:
//View v
Context ctx = v.getContext();
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
但我的屏幕尺寸错误:
06-03 05:25:47.861: I/Screen Size(5267): 1024x552
我的平板电脑有一个分辨率为1024x600的7英寸屏幕。我猜测系统栏使用的是48个像素,但即使隐藏它,我也会得到屏幕尺寸。
由于我在Android 4.1.1上,我不能使用API17中添加的getRealSize()
方法。
如何获得正确的屏幕尺寸?
更新:我的面板密度与1.0没有差别,因此不是问题重复。大小应该是正确的。
Update2:以下代码有效(仅适用于13到16之间的API)。 它返回600x1024,因此只需检查屏幕方向以获得正确的宽度/高度
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
int nW = (Integer)mGetRawW.invoke(dp);
int nH = (Integer)mGetRawH.invoke(dp);
我从这里开始:Android DisplayMetrics returns incorrect screen size in pixels on ICS
答案 0 :(得分:0)
您可以获得此类显示指标
context.getResources().getDisplayMetrics().density;
对于不同的人而不是densiy
这是一种方法,您可以在视图中覆盖以获取屏幕设备信息,每个设备运行一次
@Override
public void onSizeChanged (int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
screenW = w;
screenH = h;
scaledCardW = (int) (screenW/8); //or whatever scale you need for bitmaps
scaledCardH = (int) (scaledCardW*1.28);
bitmap = // load your bitmaps
}
答案 1 :(得分:0)
你不能,但由于系统栏总是在屏幕的底部,你可以使用这个技巧来获得真正的尺寸:
Display display = getWindowManager().getDefaultDisplay();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
int height = display.getWidth();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
int width = display.getWidth();