Android SurfaceView中的分辨率独立性

Android SurfaceView中的分辨率独立性,android,screen-resolution,Android,Screen Resolution,我目前正在安卓系统中启动一个游戏引擎,第一次进入该平台,并具备了基础知识,但我不确定在使用SurfaceView绘制图形时实现分辨率独立性的最佳方法 寻找如何使游戏/精灵等独立于屏幕保持相同外观的指针,显然,每帧缩放所有精灵或存储不同分辨率的多种变化是没有效率的。有两种简单的方法: 第一: 创建曲面视图时,它将调用: onSizeChanged (int w, int h, int oldw, int oldh) 创建几个全局变量x&y,因此如果您使用以下内容覆盖此变量: onSizeCha

我目前正在安卓系统中启动一个游戏引擎,第一次进入该平台,并具备了基础知识,但我不确定在使用SurfaceView绘制图形时实现分辨率独立性的最佳方法


寻找如何使游戏/精灵等独立于屏幕保持相同外观的指针,显然,每帧缩放所有精灵或存储不同分辨率的多种变化是没有效率的。有两种简单的方法:

第一:

创建曲面视图时,它将调用:

onSizeChanged  (int w, int h, int oldw, int oldh)
创建几个全局变量x&y,因此如果您使用以下内容覆盖此变量:

onSizeChanged(int w, int h, int oldw, int oldh){
this.w=w;
this.h=h;
}
然后在任何绘图或游戏计算中,都可以使用窗口w和h

第二:

在绘图和游戏计算中调用getWidth()和getHeight()


祝你的比赛好运

加载精灵时,只需缩放精灵即可。我猜你是从资源中将它们作为位图加载的,对吗?如果是这样的话,那么你需要做的就是这样:

BitmapFactory.Options options = new BitmapFactory.Options();
options.outHeight = spriteHeight * scale;
options.outWidth = spriteWidth * scale;

Bitmap sprite = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sprite, options)

其中比例取决于屏幕大小的变化。

谢谢Laurence,我想我的问题更多的是针对如何处理缩放,如果ingame位图,那么游戏在所有平台上看起来都一样……凯西,干杯,有了这个解决方案,你认为最好是合并适用于Nexus等更大android分辨率的尽可能高的精灵,然后缩小旧设备的图形?我想是的,缩小它们比放大它们看起来更好。所以我尝试了这段代码,并且已经看过了文件。。出于某种原因,精灵总是以相同的大小输出,即使我硬编码outHeight和outWidth变量。您需要:将inDensity设置为位图本机的屏幕密度。将inTargetDensity设置为运行应用程序的设备的屏幕密度。并设置为真。然后,您将得到一个按屏幕比例缩放的位图,您可以从outWidth和outHeight值中获取大小。答案是错误的,需要编辑和更正。另一个选项是在绘制时使用矩阵比例进行缩放。