Android SurfaceView中的分辨率独立性

时间:2010-01-16 20:12:24

标签: android screen-resolution

我目前正在Android中开始一个游戏引擎,首先涉足该平台并掌握基础知识但是我不确定在使用SurfaceView绘制图形时获得分辨率独立性的最佳方法。

寻找关于如何使游戏/精灵等看起来与屏幕无关的指针,显然每帧都缩放所有精灵或者为不同的分辨率存储许多变化是不高效的

2 个答案:

答案 0 :(得分:5)

您只需在加载它们时缩放精灵。我猜你是从资源中加载它们作为位图,对吧?如果是这种情况,那么你需要做的就是这样:

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

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

其中比例是基于屏幕尺寸的变化。

答案 1 :(得分:1)

有两种简单的方法:

首先:

在创建Surface视图时,它会调用:

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()。

祝你好运!