Рассчитать размер экрана в Android - PullRequest
0 голосов
/ 04 мая 2011

Я путешествовал по всему интернету в поисках способа сделать что-то, что, на мой взгляд, было бы очень простым.Итог: у меня есть Android-интерфейс, который я разработал.Он состоит из кнопок, которые расположены вдоль середины экрана.Это своего рода экран меню.Эти кнопки должны находиться в одном и том же месте, но их размер должен увеличиваться или уменьшаться в зависимости от физического размера экрана.По сути, если у меня есть кнопка на экране размером 1px (или dip; dip - это то, что я сейчас использую в своем приложении) X 1px, то, если я удваиваю размер экрана, кнопка должна автоматически отформатироваться до 2px X 2px.Я сделал математику в моем заявлении.Кнопка, которая у меня есть, находится примерно на 225/854 вниз по экрану (это примерно на 26,44% сверху). Все, что я хочу сделать, это заставить эту кнопку опуститься на ту же величину.Скажем, я уменьшил размер экрана до 500, соотношение должно остаться прежним.

Пример математической работы:

(225 dip / 854 px) * 100 = 26,44%

, поэтому, если я уменьшу размер экрана до 500px, провал будет следующим:

(225dip / 854px) * 500px = 131.733021077283372 dip

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

Если вы все еще в замешательстве (извините!), Вот ключ к просмотру этой работы.

225dip = как далеко кнопка опускается от верхней части экрана.854px = физический размер (в пикселях) экрана 131.733021077283372 dip = новое количество провалов, если экран уменьшен до 500px физический размер

Ответы [ 3 ]

1 голос
/ 05 мая 2011

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

getWindow().getWindowManager().getDefaultDisplay().getWidth();

или getHeight () в вашем случае. Если у вас есть это, просто сделайте свою математику, а затем:

ViewGroup.LayoutParams buttonLayout = yourButton.getLayoutParams();

buttonLayout.height = 42; // Set your height

buttonLayout.y = 42; //Set distance from top of the screen

и так далее. После того, как сделано:

yourButton.setLayoutParams(buttonLayout);

Дайте мне знать, если это работает.

0 голосов
/ 04 мая 2011

Если вы разрабатываете свой интерфейс с использованием модулей dip (или dp) и sp (для шрифтов), вы можете позволить Android выполнить масштабирование за вас. Хотя, возможно, не на всех устройствах пиксель будет идеальным, на многих устройствах ваше приложение будет выглядеть одинаково.

Поддержка нескольких экранов on http://d.android.com описывает это ...

0 голосов
/ 04 мая 2011

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

Например, в папке «Мои игры» есть папки, отмеченные как drawable, drawable-hdpi и другие. Эта папка предназначена для размещения соответствующих изображений для типа экрана.

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

Надеюсь, это поможет!

РЕДАКТИРОВАТЬ: Я бы определенно проверил эту страницу документа

http://developer.android.com/guide/practices/screens_support.html

...