है, मैं एक एनीमेशन खींचने की कोशिश कर रहा हूं। ऐसा करने के लिए मैंने ऑनडो() विधि को देखें और ओवरराइड किया है। मैं जो अपेक्षा करता हूं वह यह है कि प्रत्येक बार ड्रॉ() को कैनवास कहा जाता है, जिसे मैं इसे छोड़ देता हूं और मैं इसे साफ़ करना चुन सकता हूं या बस इसके कुछ हिस्सों को खींच सकता हूं (इस तरह यह मैंने सतह दृश्य का उपयोग करते समय काम किया) लेकिन हर बार कैनवास वापस आ गया है पहले ही मंजूरी दे दी है। क्या कोई तरीका है कि मैं इसे साफ़ नहीं कर सकता? या हो सकता है कि पिछले राज्य को बिटमैप में सेव करें ताकि मैं बस उस बिटमैप को खींच सकूं और उसके बाद इसे ऊपर खींच सकूं?एंड्रॉइड व्यू.ऑनड्रा() हमेशा एक साफ कैनवास
उत्तर
मुझे यकीन नहीं है कि कोई रास्ता है या नहीं। लेकिन मेरे कस्टम विचारों के लिए मैं या तो प्रत्येक बार ड्रॉ() कहलाता हूं, या बिटमैप पर खींचता हूं और फिर कैनवास में बिटमैप खींचता हूं (जैसा कि आपने अपने प्रश्न में सुझाव दिया था)।
यहाँ मैं कैसे कर यह
class A extends View {
private Canvas canvas;
private Bitmap bitmap;
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (bitmap != null) {
bitmap .recycle();
}
canvas= new Canvas();
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
}
public void destroy() {
if (bitmap != null) {
bitmap.recycle();
}
}
public void onDraw(Canvas c) {
//draw onto the canvas if needed (maybe only the parts of animation that changed)
canvas.drawRect(0,0,10,10,paint);
//draw the bitmap to the real canvas c
c.drawBitmap(bitmap,
new Rect(0,0,bitmap.getWidth(),bitmap.getHeight()),
new Rect(0,0,bitmap.getWidth(),bitmap.getHeight()), null);
}
}
आपको मूल दृश्य और सतह दृश्य के बीच अंतर देखने के लिए here पर एक नज़र रखना चाहिए। एक सतह दृश्य में ड्राइंग के लिए एक समर्पित परत है, जो मुझे लगता है कि आपने पहले जो आकर्षित किया था उसका ट्रैक रखता है। अब यदि आप वास्तव में इसे मूल दृश्य पर करना चाहते हैं, तो आप itemized overlay for the mapview के उदाहरण की तरह, प्रत्येक आइटम को सरणी में खींचने का प्रयास कर सकते हैं। यह बहुत ही काम करना चाहिए
मैंने उस पृष्ठ को देखा। असल में यह पृष्ठ मुझे प्रारंभ में SurfaceView का उपयोग करने के लिए प्रेरित करता है, लेकिन फिर मैंने पाया कि SurfaceView में पारदर्शी पृष्ठभूमि नहीं हो सकती है। और मुझे इस विजेट की अन्य दृश्यों के शीर्ष पर बैठने में सक्षम होने की आवश्यकता है। – CaseyB
फिर खींचने योग्य सरणी का प्रयास करें? – Sephy
आधुनिक एंड्रॉइड में यदि आप ओपनजीएल रूट जाना चाहते हैं तो आप एक बनावट दृश्य का उपयोग कर सकते हैं। – Adam
आपका उम्मीदों जिब नहीं है w/वास्तविकता :) कैनवास नहीं होगा जिस तरह से आप यह छोड़ दिया है, लेकिन यह बजाय खाली। आप खींचे जाने के लिए ऑब्जेक्ट्स का एक ऐरेलिस्ट बना सकते हैं (canvas.drawCircle(), canvas.drawBitmap() आदि), फिर ऑनड्रा() में ArrayList हालांकि पुनरावृत्त करें। मैं ग्राफिक्स प्रोग्रामिंग के लिए नया हूं लेकिन मैंने इसे छोटे पैमाने पर इस्तेमाल किया है। शायद एक बेहतर तरीका है।
यह है कि यदि आप कैनवास बनाते हैं। इस तरह आपके पास खींचा जाने पर कुल नियंत्रण है। – CaseyB
एक ऐरेलिस्ट के बजाय: आप ड्राइंग कॉल रिकॉर्ड करने के लिए पिक्चर क्लास का उपयोग कर सकते हैं। –
- 1. एक एंड्रॉइड कैनवास
- 2. एंड्रॉइड - कैनवास
- 3. एंड्रॉइड कैनवास
- 4. हमेशा परीक्षण के बाद साफ करें?
- 5. एंड्रॉइड कैनवास
- 6. एंड्रॉइड कैनवास
- 7. एंड्रॉइड कैनवास
- 8. एंड्रॉइड: कैनवास
- 9. एंड्रॉइड कैनवास
- 10. कैनवास (एंड्रॉइड)
- 11. कैनवास (एंड्रॉइड)
- 12. एंड्रॉइड कैनवास
- 13. एचटीएमएल 5 कैनवास और एंड्रॉइड कैनवास
- 14. एंड्रॉइड पारदर्शी कैनवास (सतहदृश्य)
- 15. एंड्रॉइड कैनवास अर्ध पारदर्शी
- 16. एंड्रॉइड स्केलिंग कैनवास बिटमैप
- 17. एंड्रॉइड कैनवास लॉकिंग IllegalArgumentException
- 18. एंड्रॉइड कैनवास ड्रा आयताकार
- 19. एंड्रॉइड गेम, कैनवास या ओपनजीएल?
- 20. एंड्रॉइड प्रोजेक्ट को कैसे साफ करें?
- 21. एंड्रॉइड सर्फेस व्यू कैनवास ड्राइंग
- 22. एक कैनवास
- 23. लॉक कैनवास() विभिन्न कैनवास
- 24. कैनवास
- 25. एंड्रॉइड वेबव्यू कैनबैक हमेशा सत्य
- 26. एंड्रॉइड डेवलपमेंट: हमेशा नए एमुलेटर
- 27. जावा MimetypesFileTypeMap हमेशा एंड्रॉइड एमुलेटर
- 28. टैब विजेट हमेशा एंड्रॉइड 4.0
- 29. सभी अनुप्रयोगों के शीर्ष पर एक एंड्रॉइड कैनवास बनाएं?
- 30. एक कैनवास todataURL
मैंने इसे थोड़ा सा पहले समझ लिया! इनपुट के लिए धन्यवाद! – CaseyB
बफर करने के लिए ड्राइंग ठीक काम करता है, लेकिन यह विशाल ड्रॉ बिटमैप() विधि बहुत सारे एफपीएस खाती है :( –
यह अभी मेरे लिए एक बाधा है - पूर्णस्क्रीन बिटमैप को आकर्षित करने के लिए प्रत्येक बार पिछली स्थिति को पुनर्स्थापित करने के लिए हर बार उच्च रिज़ॉल्यूशन डिवाइसों के लिए एफपीएस को प्रभावित करता है (2560x1600 के साथ किंडल 8.9 3 जी जेन की तरह)। क्या कैनवास को मजबूर करने के लिए वास्तव में कोई रास्ता नहीं है, यह पिछले राज्य को जारी रखता है? ओपनजीएल में गहराई से प्रदर्शन समस्या हल हो सकती है, हालांकि यह उस समय तक नहीं है। –