Nexus-S / Galaxy SII 480x800分辨率在genymotion模拟器上显示480x728?

时间:2014-01-05 06:02:20

标签: android android-emulator genymotion

我没有480x800设备,所以我使用的是genymotion模拟器。 Nexus-S的规格说480x800但是当我在应用程序中获得屏幕尺寸时它说480x728?我想知道这是否是在实际设备上发生的事情,或者它只是genymotion模拟器中的一个错误?

@Override
public void onClick( View view )
{
    if ( view == null )
        return;

    View v1 = getActivity().findViewById( R.id.bg );
    Toast.makeText( getActivity(), "height:" + v1.getHeight() + " width:" + v1.getWidth(), Toast.LENGTH_SHORT ).show();
}

我在style.xml中有这些

    <item name="android:windowFullscreen">true</item>
    <item name="android:windowNoTitle">true</item>

这是布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

这显示了活动视图的尺寸。宽度是正确的,因为该视图跨越显示的整个宽度。但是,高度不是全分辨率高度,因为它是全高,减去状态栏的高度减去操作栏的高度。如果您想要显示器的真实分辨率,请使用以下代码进行API级别13及更高版本:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果您想支持低于API 13,可以使用:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

答案 1 :(得分:0)

实际高度与视图高度的差异是屏幕底部软件按钮栏的高度(48 dp)。

确定实际屏幕高度的正确方法取决于设备API版本,并在此处进行了描述:How to get real screen height and width?

使用以下代码段:

int screenWidth = 0;
int screenHeight = 0;
if (Build.VERSION.SDK_INT >= 11) {
    Point size = new Point();
    try {
        this.getWindowManager().getDefaultDisplay().getRealSize(size);
        screenWidth = size.x;
        screenHeight = size.y;
    } catch (NoSuchMethodError e) {
        Log.i("error", "it can't work");
    }

} else {
    DisplayMetrics metrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    screenWidth = metrics.widthPixels;
    screenHeight = metrics.heightPixels;
}