2012-11-03 17 views
24

मैं निम्नलिखित कोड का टुकड़ा, कि कैनवास 'वर्तमान परिवर्तन मैट्रिक्स का उपयोग कर सीमा का एक सेट बदल देती है।पदावनत Canvas.getMatrix के लिए विकल्प क्या है()?

final RectF bounds = renderer.computeBounds 
    activeCanvas.getMatrix().mapRect(result, bounds); 
    return bounds; 

हालांकि, नवीनतम एपीआई स्तर (16) के साथ मैं एक चेतावनी

The method getMatrix() from the type Canvas is deprecated

बताते हुए के रूप में API 16 Diff Specification से इसकी पुष्टि मिलता है।

कौन सा ठीक है और सभी है, लेकिन Canvas.getMatrix() पर वर्तमान प्रलेखन निंदा का उल्लेख नहीं है, न ही यह एक विकल्प प्रदान करता है। समाधान के लिए मैं अब बस इस चेतावनी को दबाने, लेकिन मैं सच में जानना नए और बेहतर (टीएम) ऐसा करने का तरीका कैसा दिखता चाहते हैं।

+0

उपयोग कैनवास.कोनकैट (मैट्रिक्स) –

उत्तर

9

मैट्रिक्स अब बल्कि कैनवास से दृश्य द्वारा नियंत्रित किया जाता। दुर्भाग्यवश मैं आपको इस पर Google के फैसले की व्याख्या नहीं कर सकता, लेकिन आपको समान तरीकों को दो तरीकों से पुन: उत्पन्न करने में सक्षम होना चाहिए।

+0

यह सच साबित होता है, हालांकि 'getMatrix', 'getRotation' ... api 11 में पेश किया गया था। वैसे भी, इस जानकारी को पकड़ने के लिए व्यू में TransformationInfo पेश किया गया है। क्यूं कर? मुझे अनजान है, लेकिन मुझे संदेह है कि इसे नए एनीमेशन एपीआई –

+0

के साथ करना है, मुझे लगता है कि मुख्य कारण यह है कि कैनवास के साथ काम करना क्यों सीधे दृश्य के साथ काम करने से अधिक जटिलता लाता है। व्यू से निपटने का तर्क कोड को और अधिक वर्दी बनाता है जो मैं कहूंगा, और शायद वह तर्क है जिसे वे हासिल करने का प्रयास करते हैं। – ben

+0

लेकिन एक कैनवास/जब ड्राइंग बिटमैप पैदा अभी भी बहुत उपयोगी है। –

9

मुझे लगता है कि issue with getMatrix when hardwareAcceleration is enabled की वजह से, उन्होंने इसे हटा दिया, क्योंकि कोर ने कहा कि अब मैट्रिक्स को दृश्य द्वारा नियंत्रित किया जाता है।

3

आप एक दृश्य की पहुंच नहीं है, तो:

समस्या को हल करने के लिए, ज्यादातर स्थितियों में, आप किसी भी परिवर्तनों canvas.scale(), canvas.translate(), आदि का उपयोग लागू कर सकते हैं मैट्रिक्स को पुनः प्राप्त करने, इसे संशोधित करने और फिर मैट्रिक्स को फिर से सेट करने के बजाय।

Google issue with getMatrix when hardwareAcceleration is enabled से, संदीप द्वारा संदर्भित अनुसार।

संबंधित मुद्दे