Se eu apertar o botão liga / desliga em meu telefone Android (ou esperar o tempo limite) e o telefone entrar no modo de hibernação, depois de acordar novamente, a proporção da tela ficará fora de controle.
Capturas de tela:
quebrado
correto
em GameActivity.onCreate ()
// Grab display info
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
ACTUAL_SCREEN_WIDTH = (int) dm.widthPixels;
ACTUAL_SCREEN_HEIGHT = (int) dm.heightPixels;
ACTUAL_DENSITY = dm.density;
double scale = ((double) MainMenuActivity.resolutionScale / 100.0);
SCREEN_WIDTH = (int) (ACTUAL_SCREEN_WIDTH * scale);
SCREEN_HEIGHT = (int) (ACTUAL_SCREEN_HEIGHT * scale);
DENSITY = ACTUAL_DENSITY * scale;
// Setup graphics
requestWindowFeature(Window.FEATURE_NO_TITLE);
surface_view = new GLSurfaceView(this);
if (SCREEN_WIDTH != ACTUAL_SCREEN_WIDTH
|| SCREEN_HEIGHT != ACTUAL_SCREEN_HEIGHT)
surface_view.getSurfaceHolder().setFixedSize(SCREEN_WIDTH,
SCREEN_HEIGHT);
Estou recarregando tudo corretamente em GLSurfaceView (ou seja, ir para casa e voltar ao jogo recarrega as texturas, etc).
Eu imprimi a orientação em onWindowFocusChanged e é paisagem (como esperado).
O problema não aparece se eu não usar setFixedSize (ou seja, se resolutionScale for 100). Além disso, o problema desaparece se outra janela aparecer na frente do jogo (como a janela de preferências) e você retornar o jogo.
Agradecemos antecipadamente. Tenho tentado coisas aleatórias por cerca de uma hora desde que as pesquisas terminaram.