デバイスがロックされているときにアクティビティが変更されると、デバイスのロックを解除するとアクティビティの下部が切り取られることがわかりました。
たとえば、デバイスのスリープ時間を 15 秒に設定し、電話機のアイドル時間の 20 秒後にアクティビティを変更するコードを記述します。電話を 21 秒間アイドル状態にしてロックを解除すると、変更されたアクティビティが切断されます。アクティビティの上にソフト メニューが表示され、アクティビティの下部が表示されることがわかりました。ログを入れて分析したところ、ロックを解除した後、通常は 1701 であるウィンドウの高さが 1845 になっていることがわかりました。
ウィンドウのサイズを取得するために使用しているコードは::
int initialWidth = getWindowManager().getDefaultDisplay().getWidth();
int initialHeight = getWindowManager().getDefaultDisplay().getHeight();
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int statusBarHeight = getDefaultStatusBarHeight(displayMetrics.densityDpi);
Rect screenSize= new Rect();
screenSize.right = initialWidth;
screenSize.bottom = initialHeight - statusBarHeight; //screenSize is what we are using //to display screen.
//code we are using to get status bar heigth.
private int getDefaultStatusBarHeight(int densityDpi) {
int statusBarHeight = 0;
switch (densityDpi) {
case 120:
statusBarHeight = 19;
break;
case 160:
statusBarHeight = 25;
break;
case 240:
statusBarHeight = 38;
break;
default:
statusBarHeight = Math.round((float) densityDpi * 25 / 160);
}
return statusBarHeight;
}
ICS デバイスのようなソフト メニュー バーを持つ Newcastle ANDROID 4.1.1 でこの問題に直面しています。
誰も同じ問題に直面しましたか? はいの場合、解決策は何ですか?