Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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
Java Android模拟器没有模拟正确的密度或分辨率。可能是surfaceview实现问题_Java_Android_Eclipse_Android Emulator_Surfaceview - Fatal编程技术网

Java Android模拟器没有模拟正确的密度或分辨率。可能是surfaceview实现问题

Java Android模拟器没有模拟正确的密度或分辨率。可能是surfaceview实现问题,java,android,eclipse,android-emulator,surfaceview,Java,Android,Eclipse,Android Emulator,Surfaceview,我正在构建一个使用surfaceview类的小应用程序,该类扩展了surfaceholder.callback。它的实现方式与lunarlander示例类似。我的问题是,我使用的每种类型的模拟器(低密度、中密度或高密度)似乎都没有将屏幕的密度或分辨率改变到我所期望的程度。我最近询问了堆栈溢出问题,我意识到我对该函数没有做任何错误,问题是我使用的任何模拟器都以中等密度被识别 高密度模拟器屏幕显示非常逼真的图像。中等密度模拟器的图像看起来棒极了。低密度仿真器图像看起来很逼真,但没有hdpi那么糟糕

我正在构建一个使用surfaceview类的小应用程序,该类扩展了surfaceholder.callback。它的实现方式与lunarlander示例类似。我的问题是,我使用的每种类型的模拟器(低密度、中密度或高密度)似乎都没有将屏幕的密度或分辨率改变到我所期望的程度。我最近询问了堆栈溢出问题,我意识到我对该函数没有做任何错误,问题是我使用的任何模拟器都以中等密度被识别

高密度模拟器屏幕显示非常逼真的图像。中等密度模拟器的图像看起来棒极了。低密度仿真器图像看起来很逼真,但没有hdpi那么糟糕

我在每个模拟器上都执行了mySurfaceHolder.getSurfaceFrame(),并得出以下结论:

  • WVGA800-480x800-hdpi-生成一个320 x 508的曲面
  • 默认(HVGA)-mdpi-生成一个320 x 455的曲面
  • QVGA-240x320-ldpi-生成一个320 x 402的曲面
这些表面不应该分别为480x800、320x480和240x320吗?编辑:320x455有意义,其余部分可能会出现在标题栏中。但是低/高呢

因此,我不确定我的问题是否是:

  • 我如何设置模拟器 我使用HVGA、QVGA、WVGA800和 带标准设置的WVGA854(编号 自定义分辨率)

  • 我在surfaceview类中的代码有问题。注意:我没有手动设置大小,我依赖于此回调方法返回的大小:


  • 有什么想法吗?一如既往,我感谢你的帮助

    表面没有显示工作区域?不包括状态栏和应用程序标题栏。它可以给你倾斜,而不是像素


    像素=凹陷*(密度/160)

    表面不显示工作区域?不包括状态栏和应用程序标题栏。它可以给你倾斜,而不是像素


    像素=dips*(密度/160)

    好吧,我想这是android文档中的一个错误

    问题是,我使用的任何模拟器基本上都会被模拟成中等密度的屏幕,除非下面一行在Android清单文件中。所有资源默认为mdpi文件夹,并且从不从hpdi文件夹中提取。然后自动执行某种缩放操作,因为它将HDPI屏幕视为MDPI屏幕,从而解释了屏幕上的“像素化”图像

      <supports-screens
            android:anyDensity="true"/>
    
    
    

    安卓:任何密度 指示应用程序是否可以适应任何屏幕密度。旧的应用程序(API级别4之前)假定无法适应所有密度,默认为“假”。使用API级别4或更高的应用程序假定能够适应,默认为“真”。您可以在此处显式提供您的能力。”


    我使用的是API Level 8,必须提供这行代码来模拟高密度设置下的屏幕。

    好吧,我想这是android文档中的一个错误

    问题是,我使用的任何模拟器基本上都会被模拟为中等密度屏幕,除非以下行在Android清单文件中。所有资源默认为mdpi文件夹,从不从hpdi文件夹中提取。然后会自动执行某种缩放操作,因为它将HDPI屏幕视为mdpi屏幕,从而解释了屏幕上的“像素化”图像

      <supports-screens
            android:anyDensity="true"/>
    
    
    

    安卓:任何密度 指示应用程序是否可以适应任何屏幕密度。旧的应用程序(API级别4之前)假定无法适应所有密度,默认为“假”。使用API级别4或更高的应用程序假定能够适应,默认为“真”。您可以在此处显式提供您的能力。”


    我使用的是API Level 8,必须提供这行代码来模拟高密度设置下的屏幕。

    我的帖子说明了我用于返回曲面大小的方法。这个方法返回了一个以像素为单位的rect,还是不正确?我的帖子说明了我用于返回曲面大小的方法。这个方法返回了以像素为单位的rect,还是不正确?