![]() |
Модераторы: javastic |
![]() ![]() ![]() |
|
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
1. В верхней части экрана (портретная ориентация) или в левой (ландшафт) xoчу разместить квадратный GridView.
Определяю размеры экрана и выставляю размеры по минимальной размерности. Но для ландшафта нужно вычесть высоту заголовка. Как её узнать (или узнать размеры рабочей области окна для Activity, а не всего экрана)? 2. Внутри Grid хочу разместить квадратные ячейки. Как узнать размеры, оставшиеся под ячейку, с учетом всех margin и padding? 3. Определились с размером ячейки. Как определить размер шрифта, которым можно вывести одну букву внутри ячейки? PS: Все нормальные Layout'ы считают наоборот - исходя из размера шрифта определяется размер ячейки, исходя из размеров ячейки - размер грида, если грид не влезает в экран - на тебе прокрутку, или пустое место внизу экрана. Сейчас всё сделано с использованием "магических" констант для конкрентого экрана. |
|||
|
||||
PiyodaiSiyo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 31.12.2009 Репутация: 1 Всего: 2 |
в res папке сделаешь layout/main.xml для портрета и layout-land/main.xml для лэндскейпа размеры в density independent pixels |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
Естественно, есть отдельные layout для портрета и ландшафта.
Вопрос как вычислить размеры. Размеры можно прописать в dimens.xml, чтобы не плодить много layout'ов - но тогда на каждый экран нужно по два dimen.xml - для ладшафта и портрета. В тоже время можно обойтись двумя layout'ами, если научиться вычислять размеры. |
|||
|
||||
PiyodaiSiyo |
|
||||||||||||||||||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 31.12.2009 Репутация: 1 Всего: 2 |
я так понимаю нужен уст. AbsluteLayout. итак в манифесте в тегах activity нужно проставить android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" с активити
теперь есть полный доступ к экрану.
от пэдингов и маржинов в лэйаутах прийдется отказаться в onCreate
для грида например
в makeCalculations()
200 и 120 от балды.ну например размер имиджа пнж в пикселах теперь после размеров решетки в mainWindow()
все . решетка имеет размеры пропоционально равные на всех экранах и вот она
для текстВью
где gr()
для элементов ImageView сам разрулишь но если честно тяжеловато лучше уж папки для всех экранов и денсити всего 8 если не ошибаюсь Это сообщение отредактировал(а) PiyodaiSiyo - 12.8.2012, 22:50 |
||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
math64 |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
Магических констант у тебя тоже много.
Если уж убирать заголовки - AbsoluteLayout не нужен, используется LinearLayout - хотя коду без разницы
альтернатива - создать свой класс Board extend GridView и переопределить метод onMeasure() - так бы и сделал, если бы это решало все проблемы. Все паддинги и марджины - нуле. Для GridView задаю цвет background - чтобы было видно, что поля добавлены именно GridView.
Всё равно поля есть. Может какие пропустил? И на скроллинг всё-равно реагирует, хотя скроллировать нечего.
Это сообщение отредактировал(а) math64 - 13.8.2012, 08:31 |
||||||
|
|||||||
PiyodaiSiyo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 31.12.2009 Репутация: 1 Всего: 2 |
то что я выложил работает на всех экранах кроме Honeycomb,там бар трея не нашел как убрать.Это из эппа которая 'прошла'.
да,на скроллинг реагирует но только в эмуляторе попробуй на устройстве. касательно магических констант, 120/200 это помоему было стандартное отношение сторон экрана и все на этом держится. Там же пропорции.... Пардон если чего не уловил. 8/ |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
Чаще рапространены экраны с пропорциями 3:5, например у меня - 480x800, диагональ 4". Но все параметры экрана доступны в DisplayMetrics.
Поэтому 120/200 заменить не проблема. Я про другие константы - 2f, 3f, 12f, 13f, 15f, 108f, 115f, 125f - откуда они? У меня таких констант 3 (при полноэкранном режиме останется 2) textSize ты получаешь из высоты ячейки делением на 3. А нужно делить примерно на 2 (точнее умножать примерно на 0.55f, подобранно экспериментально для своего экрана, но эта константа зависит от шрифта). Тестирую, как правило, на устройстве - эмулятор слишком медленный. Про скроллинг жалуюсь в своём коде, как в твоём - не знаю, |
|||
|
||||
PiyodaiSiyo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 31.12.2009 Репутация: 1 Всего: 2 |
да все просто. открываешь пэинтнет
и масштабируешь фоновую картинку. т.е .200 х 120 включаешь координатную сетку. и вот откуда появляются кастомные циферки, просто представляешь себе этот грид на фоне тупо отсчитываешь х0, х1,у0 и у1 . ты ведь получаешь например Х0=ширина эк * х0/200 в эппе. а зачем там нпр.13f не упомню. кроме грида много чего было рядом. касательно ячеек - получено на подгонке. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 1 Всего: 72 |
Сделал всё-таки класс Board - он теперь в onMeasure() вычисляет свои размеры, Теперь MAGIC_HEADER_HEIGHT не нужен. он оказался равен 38.
Причем при редактировании main.xml в графическом виде Board теперь выглядит так, как будет выглядеть при запуске (если с конструкторе подключить адаптер). PS: лишние поля возникали из-за селектора, который больше размера ячейки (задаётся с помощью .9.png). Заменил своим селектором, который не вылезает за размеры ячейки - поля пропали. Размер грида в коде выше нужно окуглить, чтобы делился на число колонок/строк. Остаётся вычисление высоты шрифта. Это сообщение отредактировал(а) math64 - 13.8.2012, 21:23 |
|||
|
||||
PiyodaiSiyo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 31.12.2009 Репутация: 1 Всего: 2 |
ок. я рад за тебя , проверь на всех размерах и android версиях все равно
(зы: и всетаки папки лучше ![]() Это сообщение отредактировал(а) PiyodaiSiyo - 13.8.2012, 22:06 |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Android | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |