Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Экраны различных устройств - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Перейти с одного дисплея на другой http://www.cyberforum.ru/android-dev/thread614439.html
Здравствуйте! У меня возникла проблема при переходе с одного дисплея на следующий с помощью кнопки. Суть проблемы заключается в следующем: есть три дисплея. С главного я перехожу на другой, а с...
Программирование Android Button для android Как сделать, чтобы на кнопке слева была иконка и по центру был текст, как мне так сделать??? http://www.cyberforum.ru/android-dev/thread614346.html
Программирование Android Как в программе использовать все стили из файла стилей?
есть файл со стилями <?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="@android:style/Theme.Black"> </style> <style name="MyThemeButton"...
Google Maps Api Key Программирование Android
Здравствуйте! Создал приложение с использованием Google Maps. Для её работы требуется Api Key. Его я получил и карта работает. Но после того как я создал готовый apk файл и запустил его на...
Программирование Android Ищу аналог diff для android http://www.cyberforum.ru/android-dev/thread613978.html
Нужно приложение на android, которое позволяет сравнивать две папки с файлами. На sd-карте много папок с почти одинаковым содержимым (разные версии исходников). Нужно найти одинаковые файлы...
Программирование Android Почему выдает ошибку? Почему выдает ошибку? вот подробнее

Показать сообщение отдельно
kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166

Экраны различных устройств - Программирование Android

26.06.2012, 23:19. Просмотров 4050. Ответов 8
Метки (Все метки)

Мой вопрос вот в чем: есть приложение, которое состоит из бэкграунда и расположенными поверх него элементами интерфейса (кнопки и ImageView). Начитавшись разных умных источников решил использовать для указания размеров элементов и расстояний между ними единицы dp - узнав, что это аппаратно независимый пиксель я наивно решил, что это значит, что для всех устройств количество данных пикселей по горизонтали и по вертикали одинаковое, просто их размер пропорционально масштабируется. На эмуляторе все работало отлично, однако когда у меня появилась возможность установить приложение на Sony Experia X8 я был крайне удивлен, увидив, что картинка бэкграунда, как и задумывалось, растянута по экрану, а часть кнопок уползла вниз ниже границ видимости. Тогда я решил отказаться от использования dp в моем приложении.
Было принято следующее решение - создать разметку, где все элементы разложить в корневой LinearLayout, потом применить мою разметку к активити и методами getHeight() и getWith() получить габариты моего корневого LinearLayout. Потом в методе calculateGeometry() я вычислил размеры всех моих элементов исходя из найденных габаритов и применил их к элементам. В итоге ничего не вышло, т. к. размеры моего корневого элемента при вызове соответствующих методов получились 0. (для корнегого элемента я, естественно, для параметров width и height указал fill_parent).
Тогда я решил взять размеры не корневого элемента, а размера экрана устройства, получив его из объекта класса Dislay. Все размеры вычислились нормально, но нижняя часть опять уехала, т. к. я не учел высоты статусбара и титула окна. Почитав по поводу класса Display на сайте developer.android.com я узнал, что для моих нужд нужно использовать размеры не Display, а Window. Однако по поводу окон получения размеров я не нашел и решил обратиться к помощи зала.

Итак, люди помогите мне со следующими вопросами:
1) Как работают dp с разными размерами экрана?
2) Почему корневой LinearLayout при вызове getWidth() и getHight() вернул 0?
3) Как узнать размеры текущего окна Активити или размеры верхних надстроек(титула и статусбара)?
4) Может еще какой-нибудь грамотный способ существует?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru