Android Custom View - настройка на разные экраны - PullRequest
1 голос
/ 13 марта 2012

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

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

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

Я прочитал руководство Android-разработчика, но в конечном итоге оно не дает мне ответов на реальную стратегию реализации, когда вы не используете XML.

1 Ответ

1 голос
/ 03 апреля 2012

У меня та же проблема, но я постараюсь объяснить, что я обнаружил в данный момент.

Вам наверняка понадобятся знания экрана, на котором запущена игра, посетите страницу разработчика, чтобы узнать, как их получить.

http://developer.android.com/reference/android/util/DisplayMetrics.html

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

http://groups.google.com/a/googleproductforums.com/forum/#!category-topic/mobile/android-devices/jeflid4UsMQ

Итак, главная проблема сейчас: изображения.

Существует всего 4 вида папок для рисования, как вы знаете наверняка (низкий, средний, высокий и xhigh dpi). Проблема заключается в том, что планшет 10 дюймов и SmarthPhone 4 дюйма, вероятно, будут иметь одинаковое разрешение или разрешение на дюйм (точек на дюйм). Таким образом, при печати изображения из одной и той же папки для рисования оно будет иметь одинаковый размер, даже если экран устройства будет в два раза больше.

На данный момент у вас есть столько разных решений, сколько вы хотите. Изменение размеров изображений, увеличение всего вида ... но вам, вероятно, понадобится информация о классе DisplayMetrics. Я все еще работаю над своим решением, но если у вас есть более конкретный вопрос, я постараюсь ответить на него как можно лучше.

...