我正在制作游戏并使用surfaceview。 我加载代表字符和背景的位图等等。
但我如何正确地扩展它以适应大型设备和小型设备以及其他设备?
//西蒙
注意* dpi不起作用,只有像素才能使用画布
答案 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)
答案 2 :(得分:0)
Android支持的方法是为您的不同大小的应用程序创建每个位图的几个图像,并让应用程序决定使用哪个给定的屏幕密度。那些图像将放在drawable-ldpi,drawable-hdpi等文件夹中。查看链接并仔细阅读:http://developer.android.com/guide/practices/screens_support.html
虽然不是很友善。 :(