मेरे पास एक यूआई है जहां रूट लेआउट एक रिलेटिव लयआउट है। इसमें फ़ील्ड, बटन इत्यादि जैसे कई दृश्य हैं,एंड्रॉइड के सेट ड्रॉइंग कैशएनेबल() कैसे काम करता है?
दो अन्य पैनल भी हैं जो प्रारंभ में अदृश्य हैं। जब उपयोगकर्ता बटन पर क्लिक करता है, तो इनमें से एक पैनल बाईं ओर से स्लाइड करता है, नीचे से एक और स्लाइड्स। समस्या यह है कि फ्रेम दर नेक्सस एस
पर दयनीय है, मैं इन दो पैनलों की एनीमेशन को तेज करने के लिए सेटडॉइंग कैशएनेबल (सत्य) का उपयोग करना चाहता हूं। सरलीकृत उदाहरण के रूप में, यहां लगभग मोटे तौर पर मैं इन पैनलों में से एक में कैसे स्लाइड करता हूं। मैं इसे "विस्तार पैनेल" कहूंगा।
public class MyActivity extends Activity {
// Initially invisible.
private View detailPanel;
// A simple slide animation.
private Animation detailEnterAnimation;
...
public void someButtonClicked(View view) {
detailPanel.startAnimation(detailEnterAnimation);
detailPanel.setVisibility(View.VISIBLE);
detailPanel.setDrawingCacheEnabled(true);
}
}
अब विस्तार पत्र में मैं कैश का उपयोग करने की कोशिश करता हूं। मुझे उम्मीद थी कि कैश के माध्यम से बिटमैप प्रतिपादन प्रदर्शन में सुधार होगा:
public class DetailPanel extends LinearLayout {
public void draw(Canvas canvas) {
Bitmap cache = getDrawingCache();
if (cache != null) {
canvas.drawBitmap(cache, 0, 0, null);
} else {
super.draw(canvas);
}
}
}
बिटमैप में गैर-शून्य है और सही आकार है, लेकिन यह पूरी तरह से काला है।
मेरा बिटमैप काला क्यों है? वह कोड अजीब गलत हो सकता है; मैंने दस लाख अलग-अलग चीजों की कोशिश की है और इसे समझ नहीं सकता है।
क्या आपने स्लाइडिंग ड्रावर को विस्तारित करने का प्रयास किया था? यह पहले से ही स्लाइडिंग एनीमेशन है। –
विशिष्ट एनीमेशन वास्तव में नहीं है जो मैं बाद में हूं। यह और भी है कि मैं ड्राइंग कैश कैसे काम करता है इसकी सामान्य समझ चाहता हूं ताकि मैं इसे सभी प्रकार के यूआई पर लागू कर सकूं। –
शायद यह सही दिशा में कुछ है: http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html – MrJre