मैं वर्तमान में एक लाइव वॉलपेपर पर काम कर रहा हूं जो बहुत गहन है और स्क्रीन रोटेशन को बहुत अच्छी तरह से संभाल नहीं करता है।लाइव वॉलपेपर स्क्रीन रोटेशन
वास्तव में वॉलपेपर नष्ट हो गया है और बिना किसी कॉल किए बिना एक खाली स्क्रीन प्रदर्शित करता है!
यहाँ है कि मैं क्या 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);
}
}
:
onVisibilityChanged
क्या आप नाम से उम्मीद होती है नहीं है क्या आप अधिक कोड पोस्ट कर सकते हैं? यह जानने की जरूरत है कि सभी भारी काम कहाँ किया जाता है। मेरे लाइव वॉलपेपर में, दोनों सर्फफेस और ऑन विज़िबिलिटी चेंजड को स्क्रीन रोटेशन के दौरान बुलाया जाता है। इसके अलावा, अभिविन्यास बदलने के दौरान "वॉलपेपर ऑफसेट करने के लिए टाइमआउट प्रतीक्षा" जैसे कुछ के लिए लॉगकैट की जांच करें। – Ole