Escale uma vista e suas subvisões em camadas relativamente

(Este é um acompanhamento deAndroid: Como você dimensiona várias visualizações juntas?)

minha tarefa é portar um aplicativo para iPhone / iPad no Android, que consiste em uma visualização de imagem simples, na qual as animações são colocadas em camadas em posições absolutas. Embora isso pareça bastante fácil no iOS, onde você só precisa segmentar alguns tamanhos de tela possíveis, fica um pouco confuso com o Android.

Minha configuração atual é a seguinte: Um RelativeLayout no qual coloco minha imagem principal (plano de fundo) à esquerda = 0, top = 0 e várias instâncias do ViewFlipper usadas como "contêineres de animação" posicionados relativamente ao canto superior esquerdo do layout pai instância

sta abordagem tem dois problemas básico

As "animações posicionadas" são posicionadas incorretamente assim que o tamanho real do layout não coincide com o tamanho da imagem de fundo principa

As "animações" posicionadas também são de tamanho errado, porque, como costumam ter "espaço suficiente", o Android não as dimensiona para caber no RelativeLayout (nem as dimensionaria em relação ao plano de fundo original.

Como as animações em si devem ser interativas, não é uma solução colocar e posicionar todas as animações em uma camada transparente com o mesmo tamanho da imagem principal (em segundo plano), pois elas se sobrepõem e somente as a maioria seria interativa.

Pensei em diferentes soluções:

Para obter o fator de escala da imagem principal, eu poderia recuperar suameasuredWidth emeasuredHeight e coloque isso em relação ao originalwidth eheight da vista. Então eu usaria esse fator de escala para posicionamento personalizado e, eventualmente, escala personalizada. Mas, aparentemente, omeasuredWidth/-Heights propriedades @ são definidas apenas durante oonMeasure () chame e isso é chamado depois que a árvore de componentes foi criada, então não sei se esta solução é viáve

Implemente meu próprio gerenciador de layout e dimensione / posicione as visualizações de acordo. Eu dei uma olhada na implementação doRelativeLayout, mas tenho que admitir que oonMeasure () método me assusta um pouc

O que você faria no meu caso? Existe algo que eu ainda não tenha levado em consideração?

Desde já, obrigado

questionAnswers(2)

yourAnswerToTheQuestion