Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android错误的屏幕大小_Android_Android Screen - Fatal编程技术网

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();

我也尝试了度量,但仍然得到了错误的大小。我在这个问题上添加了另一个尝试