Tenho uma aplicação q faz uso de uma imagem de fundo para exibir um menu. Essa imagem posui 128 x 128, ou seja, ela fica bem em celulares com este display. Mas se eu quero q a minha aplicação seja a mais portável possível, o q eu devo fazer?
Devo fazer várias versões da minha aplicação para celulares de vários displays, ou seja, redimensionar a imagem para cada display diferente?
Ou devo dimensionar a minha imagem para o maior tamanho possível?
O Normal é sim, desenvolver uma compilação em separado para cada tipo, tamanho, enfim para cada peculiaridade que pode causar transtornos para o usuário.
Eu tenho esse problema, pois estou construindo alguns componentes, e você quando está construindo componentes, precisa informar o tamanho preferencial e o tamanho mínimo, mas o ideal seria pegar isso dependendo do tamanho do seu display já que o componente deveria estar bem visíviel na tela.
Bom, o que eu tentei, mas que pra mim não funcionou é, criar uma classe Canvas, dentro do componente, e passar o Display.setCurrent pra ela, pra que depois disso eu pudesse pegar os valores da altura e largura da tela.
No seu caso, como é uma aplicação você pode fazer isso, por exemplo criando uma tela de Spash na sua aplicação. Essa tela deve extender de Canvas. Depois que você exibir a sua tela, você pode salvar a informação da altura e largura, retornadas pela sua tela e usar isso no seu sistema todo.
A Classe Canvas, tem métodos pra pegar a altura(MinhaClasseCanvas.getHeight()) e a Largura(MinhaClasseCanvas.getWidth())
Para jogos é um pouco diferente. O que se costuma fazer , quando não se quer desenvolver várias compilações, é uma imagem central do tamanho do menor display e nas bordas uma cor neutra, que quando essa imagem fosse apresentada em outras dimensões dos displays você vizualiza a imagem com a borda preenchendo o que ficaria de fora, mas essa solução eu não acho muito viável não.