Как правильно разместить рисованные элементы на Canvas для поддержки наиболее распространенных размеров экрана телефона? - PullRequest
0 голосов
/ 02 февраля 2012

Я прочитал все страницы о поддержке нескольких экранов в Android, в том числе

.

Поддержка нескольких экранов

Предоставление ресурсов

Размеры и плотность экрана

и многие другие. Но я до сих пор не понимаю, какие ресурсы я должен предоставить для правильного размещения рисованных объектов (спрайтов) на холсте.

Я впервые играю в игру, и сейчас я играю в Whack a Mole. Я не совсем понимаю, как использовать папки ldpi, mdpi и hdpi и как правильно размещать спрайты для рисования на поверхности SurfaceView.

У меня есть фоновое изображение, разрешение 480x800, поэтому я добавил его в папку hdpi. Тогда у меня есть 120x150 спрайтов родинок, которые я должен правильно расположить на отверстиях для этого фона.

В настоящее время я использую следующий код для рисования:

canvas.drawBitmap(toDrawBitmap, draw_x, draw_y, null);

draw_x и draw_y - это пиксели, которые я нашел, пытаясь разместить их правильно:

Пока все отлично, они правильно размещены у меня на экране hdpi, 480х800. И андроид правильно масштабирует их на разных разрешениях.

Но когда я пытаюсь использовать экран с другим разрешением, они все нарисованы в неправильных местах, из дыр, некоторые из них даже вне экрана.

Пожалуйста, исправьте меня, если я ошибаюсь, но из того, что я прочитал, эти три разрешения наиболее распространены в телефонах:

240x320 маленький - ldpi

320x480 норм. - т / д

480x800, нормальный - hdpi

Моя цель - заставить игру нормально работать на этих трех видах экрана. Итак, мой вопрос:

Можно ли рассчитать значения draw_x и draw_y, которые будут работать на всех устройствах? Если нет, то как мне решить эту проблему?

1 Ответ

0 голосов
/ 02 февраля 2012

Да, вы можете рассчитать его, используя ширину и высоту устройства.

final Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

final int width = display.getWidth();
final int height = display.getHeight();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...