Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Как растягивать background на Андроиде?

#android #android_layout


Рассмотрим то, что мне нужно, на примере этого котика:



Допустим, в моём приложении этот котик представляет собой атрибут background в корневом
layout в файле main_activity.xml.

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



Так-то оно и по умолчанию происходит, но есть одно больше во-вторых: все view-элементы
на экране тоже должны сжиматься и оставаться на той части котика, на которой они были
изначально, то есть:



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

Я много читал в интернете про все эти экранные дела, но там нету целостной картины.
А мне нужна полная последовательность действий:


какие нужно создавать layout'ы?
какие к ним нужны подпапки drawable?
какого разрешения делать котиков?
писать ли что-то в AndroidManifest?
и что-то ещё, чего я не знаю..?

    


Ответы

Ответ 1



Требуемого вами поведения можно в основном добиться, используя следующую разметку: Котик заполняет собой все место - и в альбомной и в портретной ориентации. Проверено на телефоне и планшете. Надпись распологается на одном и том же месте котика. Если искать несоответстие, то это не совсем пропорциональное изменение размера текста (особенно заметно по ширине). Тут конечно тоже можно было бы повозиться и пересчитать размер шрифта, исходя из числа пикселей экрана. И назначить этот размер шрифта программно. Но мне кажется, не стоит так напрягаться, так как результат вполне сносный. Если лезть в такие дебри, то потом возникнут проблемы типа: а что если текст не поместится в одну строку? и т.д. По поводу разных плотностей. Картинка благополучно растянулась под размер экрана и на телефоне и на планшете. Оба устройства с нормальной плотностью. Для высокой плотности неплохо было бы предоставить картинку побольше. Для низкой плотности - поменьше, чтобы занимала меньше места, и не было артефактов изображения при обработке слишком детализированного изображения для экрана, где мало пикселей, хотя, может, это и лишнее.

Комментариев нет:

Отправить комментарий