Независимость от разрешения в Android SurfaceView - PullRequest
9 голосов
/ 16 января 2010

В настоящее время я запускаю игровой движок на Android, впервые набравшись на платформу, и у меня есть основы, но я не уверен в том, как лучше подходить к независимости от разрешения при использовании SurfaceView для рисования графики.

Поиск указателей на то, как заставить игру / спрайты и т. Д. Выглядеть одинаково независимо от экрана, очевидно, было бы неэффективным масштабировать все спрайты в каждом кадре или хранить множество вариаций для разных разрешений

Ответы [ 2 ]

5 голосов
/ 20 января 2010

Вы бы просто масштабировали спрайты, когда загружали их. Я предполагаю, что вы загружаете их как растровые изображения из ресурса, верно? Если это так, то все, что вам нужно сделать, это примерно так:

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 голос
/ 16 января 2010

Существует два простых подхода:

Во-первых:

При создании представления 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 () в чертежах и игровых вычислениях.

Удачи в игре!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...