Android错误的屏幕大小
我正在使用此代码获取屏幕分辨率:Android错误的屏幕大小,android,android-screen,Android,Android Screen,我正在使用此代码获取屏幕分辨率: //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; in
//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
我的平板电脑有一个7英寸的屏幕,分辨率为1024x600。我猜丢失的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);
我从这里开始:您可以得到这样的显示指标
context.getResources().getDisplayMetrics().density;
对于Density以外的不同产品也是如此
这是一种可以在视图中覆盖以获取屏幕设备信息的方法,每个设备使用一次
@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
}
您不能,但是由于系统栏始终位于屏幕底部,因此可以使用此技巧获取真实尺寸:
Display display = getWindowManager().getDefaultDisplay();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
int height = display.getWidth();
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
int width = display.getWidth();
我也尝试了度量,但仍然得到了错误的大小。我在这个问题上添加了另一个尝试