我的屏幕尺寸为 600(宽)x 1024(高)。我得到当前宽度 600,但错误地得到高度 976(没有旋转屏幕)。我得到当前宽度 1024,但错误得到高度 552(旋转屏幕)。
int rowPixelWidth = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();
int rowWidth = (int)Math.floor(rowPixelWidth / this.getResources().getDisplayMetrics().density);
int rowPixelheight = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();
int rowheight = (int)Math.floor(rowPixelheight / this.getResources().getDisplayMetrics().density);
Log.d("rowWidth","rowWidth"+rowWidth);
Log.d("rowheight","rowheight"+rowheight);
-------------------------------------------------------------
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="8" />
<supports-screens android:anyDensity="true"/>
-------------------------------------------------------------
这段代码有什么问题?
以下是典型屏幕宽度的一些数字:
- 320dp:典型的手机屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi 等)。
- 480dp:类似于 Streak (480x800 mdpi) 的中间平板电脑。
- 600dp:7 英寸平板电脑 (600x1024 mdpi)。
- 720dp:10 英寸平板电脑(720x1280 mdpi、800x1280 mdpi 等)。
我获取所有设备的当前宽度,但无法获取当前高度(没有(320x480 屏幕)。
我尝试代码获取屏幕尺寸(以像素为单位) https://stackoverflow.com/questions/1016896/android-how-to-get-screen-dimensions/1016941#1016941但同样出现问题。
我相信getDefaultDisplay
只为您提供将要显示应用程序的窗口,它不考虑其他内容,例如顶部的通知栏或底部的 Android 按钮(主页、后退...)或类似的内容。
这可能就是您在两种情况下看到垂直尺寸相差 48 像素的原因。
更多信息
您的代码似乎是正确的并且类似于there https://stackoverflow.com/a/1016941/347565。您可能还想使用类似的东西这个答案 https://stackoverflow.com/a/11623621/347565为正确的 Android 版本使用正确的 API。
但无论如何,您获得的尺寸将不包括带有 Android 软按钮的导航栏(当它们存在时)。
当您在 HVGA 屏幕上运行 Android 4.1 时,没有导航栏或组合栏(屏幕太小),因此您获得的是整个屏幕的分辨率。
如果您在较大的屏幕上运行相同的版本,您将看到导航栏,您的应用程序可用的显示尺寸较小,并且您只能获得该空间的分辨率。
请检查导航栏等的定义here http://developer.android.com/design/get-started/ui-overview.html如果你不清楚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)