Tôi hiện đang làm việc trên một hình nền sống rất chuyên sâu và không xử lý xoay màn hình rất tốt.Live Wallpaper Screen Rotation
Trên thực tế, hình nền bị hủy và hiển thị màn hình trống mà không cần gọi trênSurfaceChanged!
Dưới đây là những gì tôi có trong phương pháp 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);
}
Tôi tích cực phương pháp này không được gọi vì không có thông tin đăng nhập.
Tại sao điều này xảy ra và một số kỹ thuật xử lý xoay màn hình là gì? Có thể là hình nền sống của tôi quá sâu đến mức không thể gọi được khoảng trống?
Ngoài ra, onVisibilityChanged không được gọi là tốt và khi tôi mở ứng dụng trên giả lập, không có thông tin đăng nhập:
@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);
}
}
Bạn có thể đăng thêm mã không? Cần phải biết tất cả công việc nặng nhọc được thực hiện ở đâu. Trong Live Wallpaper của tôi, cả onSurfaceChanged và onVisibilityChanged được gọi trong khi xoay màn hình. Ngoài ra, kiểm tra bạn LogCat cho một cái gì đó như "Timeout chờ hình nền để bù đắp" trong quá trình định hướng thay đổi. – Ole