私は現在、非常に集中的で、画面の回転をうまく処理できないライブ壁紙に取り組んでいます。
実際、壁紙は破棄され、onSurfaceChanged を呼び出さずに空白の画面が表示されます。
onSurfaceChanged メソッド内にあるものは次のとおりです。
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub
super.onSurfaceChanged(holder, format, width, height);
mRatio = (float) width / height;
if (mRatio > 1) {
orientation = 0;
}
if (mRatio < 1) {
orientation = 1;
}
setRunning(true);
Log.i(TAG, "Screen Rotation...");
mHandle.post(r);
}
ログメッセージがないため、このメソッドが呼び出されないことは確かです。
なぜこれが起こっているのですか?また、画面の回転を処理するためのテクニックは何ですか? 私のライブ壁紙があまりにも集中的で、ボイドを呼び出すことができないのでしょうか?
また、onVisibilityChanged も呼び出されず、エミュレーターでアプリを開くと、ログ メッセージはありません。
@Override
public void onVisibilityChanged(boolean visible) {
// TODO Auto-generated method stub
super.onVisibilityChanged(visible);
if (visible) {
setRunning(true);
Log.i(TAG, "Visible...");
mHandle.postDelayed(r, 2000);
} else {
setRunning(false);
Log.i(TAG, "Invisible...");
mHandle.removeCallbacks(r);
}
}