Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

escalando a tela do jogo para dispositivos com resoluções diferentes

Percebi que os elementos são desenhados em pixels, e que existem telas com poucos pixels e telas com muitos. Em telas com resolução alta o jogo fica fácil, pois os canos superiores ficam distante dos inforiores, e em telas com resolução pequena ficam próximos. Como escalar a tela do jogo para ficar igual em várias resoluções?

2 respostas
solução!

Oi Tiago,

um jeito de "escalar" a tela, seria trabalhar somente com density pixels (dp) em vez de pixels. Porém, as classes que manipulam bitmaps lidam somente com px, então, podemos fazer um conversor de dp para px, e vice-versa:

public static float pxParaDp(Context context, float px) {
    return px / context.getResources().getDisplayMetrics().density;
}

public static float dpParaPx(Context context, float dp) {
    return dp * context.getResources().getDisplayMetrics().density;
}

Consegui resolver de outra maneira, na classe Game que herda de SurfaceView temos o SurfaceHolder acessado através de getHolder(). no holder existe o método setFixedSize(width, height). Isso resolve o problema

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software