(Это несколько продолжение для Android: как вы масштабируете несколько видов вместе? )
Моя задача - портировать приложение для iPhone / iPad на Android, которое состоит изпростой вид изображения, на котором анимация накладывается сверху в абсолютных позициях.Хотя это звучит довольно просто на iOS, где нужно настроить таргетинг только на несколько возможных размеров экрана, с Android это выглядит довольно грязно.
Моя текущая настройка такова: RelativeLayout, в который я помещаю свое основное (фоновое) изображениеслева = 0, top = 0 и несколько экземпляров ViewFlipper, используемых в качестве «контейнеров анимации», которые расположены относительно верхнего левого угла экземпляра родительского макета.
У этого подхода есть две основные проблемы:
Позиционированные "анимации" неправильно позиционируются, как только фактический размер макета не соответствует размеру основного фонового изображения.
позиционированные «анимации» также имеют неправильный размер, поскольку, поскольку они обычно имеют «достаточно места» вокруг себя, Android не масштабирует их, чтобы вписать в RelativeLayout (и при этом не будет масштабировать их относительно исходного фона.
Поскольку анимация сама по себе должна быть интерактивной, размещение и позиционирование всех ее не является решением.анимаций на прозрачном слое, размер которого совпадает с размером основного (фонового) изображения, поскольку они перекрывают друг друга, и только самые верхние будут вообще интерактивными.
Я думал о различных решениях:
Чтобы получить масштабный коэффициент основного изображения, я мог бы извлечь его measuredWidth
и measuredHeight
и установить его в соотношении с исходными width
и height
зрения.Затем я бы использовал этот коэффициент масштабирования для пользовательского позиционирования и, в конечном итоге, пользовательского масштабирования.Но, очевидно, свойства measuredWidth/-Height
устанавливаются только во время вызова onMeasure () , и он вызывается после построения дерева компонентов, поэтому я не знаю, возможно ли это решение вообще.
Реализация собственного менеджера компоновки и масштабирование / расположение видов соответственно.Я посмотрел на реализацию RelativeLayout
, но должен признать, что метод onMeasure () меня немного пугает.
Что бы вы сделали вмое дело?Есть что-то, что я еще не учел?
Заранее спасибо.