2017-01-14 25 views
0

Androidのスネークゲームを作成しようとしていますが、画面の幅(正方形)に広がるグリッドが必要です。Androidアプリは最小化後にのみ実行されます

私は私のpngを格納描画可能を使用して、そしてときに私が予想通り、私は自分のアプリケーションを最小化し、再オープンしたら、それは動作しますけれども、私の携帯電話は、最初は白い画面を表示するgrid.setBounds(0,0,screenWidth,screenWidth)行を追加します。

私はパラメータとして標準の数字を入れても、アプリケーションは期待通りに機能します。これはAndroid 7のネクサス6Pにあります。古いデバイスでエミュレートすると動作しますが、新しいデバイスでエミュレートすると同じ問題が発生します。画面の幅は次のようになります。

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
Display display = wm.getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
screenWidth = size.x; 
screenHeight = size.y; 
scale = screenWidth/1024.0; 

誰でも助けていただければ幸いです。

答えて

0

onWindowFocusChnaged画面サイズを取得しようとします。

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    super.onWindowFocusChanged(hasFocus); 
    WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    screenWidth = size.x; 
    screenHeight = size.y; 
    scale = screenWidth/1024.0; 
} 
+0

はい!ありがとう!その関数はいつ呼び出されるのですか? – Mikee

+0

[documentation](https://developer.android.com/reference/android/view/View.html#onWindowFocusChanged(boolean))によると、ウィンドウがフォーカスを失ったりフォーカスを失ったりすると、このメソッドが呼び出されます。具体的には、活動の再開、オリエンテーションの変更などと呼ばれています。しかし、ビューが測定された後は常に呼び出され、そこでアクティビティのサイズを取得できます。 –

関連する問題