194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|||||||||||
1 | |||||||||||
Программное масштабирование26.11.2014, 23:45. Показов 4427. Ответов 16
Метки нет (Все метки)
Доброе время суток.
Возникла проблема с масштабированием при поддержки разных экранов разных производителей. Для масштабирования содержимого экрана (в основном кнопки) использую следующий алгоритм: считываю высоту и ширину дисплея и делю на разрешение экрана на котором было все сделано/размещено, тем самым получаю коэф. пересчета.
Первичный экран (на котором было все сделано/размещено) имеет разрешение 1024х600 (Lenovo A2107), а полученное значение metrics.heightPixels = 552 (видимо с учетом панели внизу экрана), а вот для экрана Samsung G350 (реальное разрешение 800x480) значение metrics.heightPixels = 480 . Из-за такой разницы в полученных значениях кнопки вылазят за предел экрана. Подскажите, как мне правильно от масштабировать элементы экрана. Или может эти кнопки пусть занимают всю высоту экрана равномерно распределяясь по высоте экрана?
0
|
26.11.2014, 23:45 | |
Ответы с готовыми решениями:
16
масштабирование масштабирование Масштабирование Масштабирование в Qt C++ |
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.11.2014, 09:53 | 2 |
Задавайте размеры сразу в dp.
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
27.11.2014, 14:50 [ТС] | 3 |
С этого начинал, не подходит..
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.11.2014, 14:54 | 4 |
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
27.11.2014, 15:16 [ТС] | 5 |
Должно получится вот так:
При DP сохраняются физические размеры элементов экрана (остаются 4 крайних кнопки) на маленьком экране, центральные вылазят внизу..
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.11.2014, 15:22 | 6 |
korsaj, а обязательно эти кнопки программно создавать?
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
27.11.2014, 15:38 [ТС] | 7 |
Нет, весь экран в Layout, я просто масштабирую программно.
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
||||||
27.11.2014, 15:46 | 8 | |||||
Первое что пришло в голову, может и проще можно:
Можно поиграться с layout_weight чтобы увеличить/уменьшить нужные объекты.
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
27.11.2014, 15:53 [ТС] | 9 |
Идея понятна, только листвью по центру не пойдет, там просто кнопки.
... не совсем кнопки, там по три в горизонталь и крайние имеют размер имеют размер по содержимому
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
27.11.2014, 15:54 | 10 |
Ну просто LinearLayout добавьте и в нем кнопки с layout_width = match_parent
1
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
||||||
28.11.2014, 13:33 [ТС] | 11 | |||||
Ага, понятно. Спасибо, открыли глаза )))
А весовые коэф вы как выбирали? Добавлено через 7 минут Уже нашел http://startandroid.ru/ru/urok... entov.html Добавлено через 21 час 18 минут Подскажите как правильно выбирать весовые коэф? Вот мой лайаут Кликните здесь для просмотра всего текста
Подобрал коэф методом тыка (что очень не нравится). Пробовал выставлять по соотношения (1:1:1 работает), если выбираю 1:3:1, то на экране "черт знает что", центральная часть исчезает, а правая вылазит за границы экрана...
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
28.11.2014, 13:41 [ТС] | 12 |
А это нормальный и проблемный экраны:
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
28.11.2014, 13:55 | 13 |
korsaj, если честно, сам не совсем понимаю логику работы веса. Насколько понял, чем больше вес, тем меньше места элементу остается на экране. Т.е. не как написано в уроке по ссылке выше, а на оборот. Например, если я хочу чтобы первая кнопка занимала 3/4, а вторая 1/4, нужно установить первой вес = 1, второй = 3. Странно и не логично, но так оно работает, а может я чего-то не знаю.
0
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
|
28.11.2014, 14:27 [ТС] | 14 |
Я тоже это заметил. Почему так не понятно.
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
|
28.11.2014, 15:03 | 15 |
Если не задать параметр weightSum у родительского лаяута, то 1 считается за 100%, поэтому 3/4 и 1/4 будут выглядеть как 0.75 и 0.25
1
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
||||||
28.11.2014, 15:51 | 16 | |||||
Gabberr,
А как это объяснить, когда вес = 1 и 3?
Добавлено через 3 минуты
Даже в таком случае тот linearLayout, у которого вес = 3 занимает 1/4, а другой, у которого вес = 1 - 3/4. И если убрать строчку android:weightSum="4" - ничего не измениться. НО, если заменить внутренним элементам android:layout_height="match_parent" на android:layout_height="0dp" - работает так, как ожидается. Опять же не важно установлен android:weightSum="4" или нет.
0
|
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
|
|
28.11.2014, 15:58 | 17 |
а ну да, естественно, при использовании весов ширину или высоту нужно занулять.
0
|
28.11.2014, 15:58 | |
28.11.2014, 15:58 | |
Помогаю со студенческими работами здесь
17
Масштабирование Масштабирование Масштабирование Масштабирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |