Android开发:扩展以适应不同的设备

时间:2011-08-01 18:04:12

标签: android screen scale surfaceview

我正在制作游戏并使用surfaceview。 我加载代表字符和背景的位图等等。

但我如何正确地扩展它以适应大型设备和小型设备以及其他设备?

//西蒙

注意* dpi不起作用,只有像素才能使用画布

3 个答案:

答案 0 :(得分:1)

您可以实现一个辅助方法,您可以根据设备的dpi请求计算。

基于来自此qustion的@MitulNakum回答,请执行以下操作:

//note that mdpi is the standard
float getAdjustedDimension(float value){
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    switch(metrics.densityDpi){
         case DisplayMetrics.DENSITY_LOW:
              //api 4 and higher
              return 0.75 * value;
         case DisplayMetrics.DENSITY_MEDIUM:
              //api 4 and higher
              return value;
         case DisplayMetrics.DENSITY_HIGH:
              //api 4 and higher
              return value * 1.25;
         case DisplayMetrics.DENSITY_XHIGH
              //api 9 and higher
              return value * 2;
         case DisplayMetrics.DENSITY_TV
              //api 13 and higher
              return value * 1.33125;
    }
}

答案 1 :(得分:1)

看看AndEngine的相机。您正在寻找的一切都可以在那里找到,它是开源的!我已经将这个引擎用于了许多游戏和原型应用程序。它有很好的记录。

AndEngine.org

Source Code

答案 2 :(得分:0)

Android支持的方法是为您的不同大小的应用程序创建每个位图的几个图像,并让应用程序决定使用哪个给定的屏幕密度。那些图像将放在drawable-ldpi,drawable-hdpi等文件夹中。查看链接并仔细阅读:http://developer.android.com/guide/practices/screens_support.html

虽然不是很友善。 :(