नए एंड्रॉइड समर्थन अपडेट के साथ, वेक्टर ड्रॉबल्स पिछड़े संगतता प्राप्त करते हैं। मेरे पास विभिन्न पथों के साथ एक वेक्टर छवि है। मैं एक इनपुट मूल्य के आधार पर बटन के क्लिक पर या प्रोग्रामेटिक रूप से पथ पर बदलने के पथों का रंग चाहता हूं। क्या वेक्टर पथ के नाम पैरामीटर तक पहुंच बनाना संभव है? और फिर रंग बदलें।बटन पर वेक्टर ड्रॉइंग पथ का रंग कैसे बदलें
उत्तर
उपयोग यह आपके वेक्टर drawable
VectorChildFinder vector = new VectorChildFinder(this, R.drawable.my_vector, imageView);
VectorDrawableCompat.VFullPath path1 = vector.findPathByName("path1");
path1.setFillColor(Color.RED);
लाइब्रेरी में एक पथ रंग बदलने के लिए यहाँ है: https://github.com/devsideal/VectorChildFinder
पूरे वेक्टर का रंग सेटटिंट का उपयोग करके बदला जा सकता है।
DrawableCompat.setTint(myImageView.getDrawable(), ContextCompat.getColor(context, R.color.another_nice_color));
नोट:: myImageView.getDrawable()
अगर वेक्टर drawable NullPointerException देता
<ImageView
android:id="@+id/myImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tint="@color/my_nice_color"
android:src="@drawable/ic_my_drawable"
android:scaleType="fitCenter" />
फिर अपनी छवि के रंग बदलने के लिए:
आप इस रूप में अपने लेआउट फ़ाइल में अपने imageView स्थापित करने के लिए है पृष्ठभूमि के रूप में छवि देखें पर सेट है।
इस पूरे drawable को टिंट सेट नहीं लेकिन की एक विशिष्ट पथ वेक्टर खींचने योग्य। – suku
'एंड्रॉइड:' एंड्रॉइड सेट करने के बाद टिंट' सेट किया जाना चाहिए: src' – rupinderjeet
कमाल! धन्यवाद। – tinyCoder
के रूप में इस पोस्ट https://stackoverflow.com/a/32007436/4969047
आप में @Eyal द्वारा कहा गया परिवर्तन रनटाइम पर अलग-अलग पथ का रंग नहीं कर सकते। VectorDrawableCompat
के स्रोत कोड को देखते हुए, केवल विधि नाम से आंतरिक तत्व को बेनकाब करने के getTargetByName
जो VectorDrawableCompat
के भीतरी निजी राज्य वर्ग VectorDrawableCompatState
में मौजूद है।
चूंकि यह एक पैकेज निजी (डिफ़ॉल्ट) है - आप इसका उपयोग नहीं कर सकते (जब तक आप reflection का उपयोग नहीं करते)।
@ शुब्राल, क्या आप कृपया कोड के साथ विस्तार से बता सकते हैं कि इसे प्राप्त करने के लिए प्रतिबिंब का उपयोग कैसे किया जा सकता है? इसमें समय लग सकता है लेकिन लोगों के भार में मदद मिलेगी। – suku
इस अन्य प्रश्न पर मेरा उत्तर देखें: https://stackoverflow.com/a/38418049/1335438।
थीम का उपयोग करके और पथ को पैरामीटर करने के लिए इसे गतिशील रूप से सेट करने में सक्षम होने के लिए इसका प्रबंधन करना एक अच्छा विचार है।
आप निम्नतर API में रंग बदलने के लिए getActivity के स्थान पर टुकड़ा
int myVectorColor = ContextCompat.getColor(getActivity(), R.color.colorBlack);
myButton.getIcon().setColorFilter(myVectorColor, PorterDuff.Mode.SRC_IN);
में वेक्टर रंग बदलने के लिए आप गतिविधि में वेक्टर रंग बदलने के लिए MainActivity.this का उपयोग करना चाहिए इस विधि का उपयोग कर सकते हैं
आप प्रतिबिंब का उपयोग किए बिना रनटाइम पर व्यक्तिगत पथ का रंग बदल सकता है।
वेक्टरमास्टर वेक्टर ड्रॉबल्स पर गतिशील नियंत्रण प्रस्तुत करता है। इस लाइब्रेरी का उपयोग करते हुए वेक्टर ड्रायवर के प्रत्येक पहलू को गतिशील रूप से नियंत्रित किया जा सकता है (जावा इंस्टेंस के माध्यम से)।
बस अपने एप्लिकेशन की build.gradle
dependencies {
compile 'com.sdsmdg.harjot:vectormaster:1.0.9'
}
आपके मामले में में निम्नलिखित निर्भरता को जोड़ने आप एक सरल रंग बदलने की जरूरत है:
वेक्टर उदाहरण: your_vector।एक्सएमएल
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:name="outline"
android:pathData="M20.84,4..."
android:strokeColor="#5D5D5D"
android:fillColor="#00000000"
android:strokeWidth="2"/>
एक्सएमएल:
<com.sdsmdg.harjot.vectormaster.VectorMasterView
android:id="@+id/your_vector"
android:layout_width="150dp"
android:layout_height="150dp"
app:vector_src="@drawable/your_drawable" />
जावा:
VectorMasterView heartVector = (VectorMasterView)
findViewById(R.id.your_drawable);
// find the correct path using name
PathModel outline = heartVector.getPathModelByName("outline");
// set the stroke color
outline.setStrokeColor(Color.parseColor("#ED4337"));
// set the fill color (if fill color is not set or is TRANSPARENT, then no fill is drawn)
outline.setFillColor(Color.parseColor("#ED4337"));
से: https://github.com/harjot-oberai/VectorMaster, एमआईटी के अंतर्गत लाइसेंस।
अब आपके पास वेक्टर ड्रॉबल्स पर पूर्ण नियंत्रण है।
एक ही काम करना के कई तरीके हैं, लेकिन यह दोनों वेक्टर ड्रॉएबल लिए काम करता है साथ ही एसवीजी (स्थानीय/नेटवर्क)।
imageView.setColorFilter(ContextCompat.getColor(context,
R.color.headPink), android.graphics.PorterDuff.Mode.SRC_IN);
- 1. बूटस्ट्रैप अक्षम बटन का रंग कैसे बदलें?
- 2. टॉगल बटन का रंग कैसे बदलें?
- 3. एसवीजी - बटन पर भरें रंग बदलें
- 4. बदलें बटन एंड्रॉइड: अलग-अलग ड्रॉइंग करने योग्य पृष्ठभूमि
- 5. क्या वेक्टर ड्रॉइंग
- 6. सिस्टम। ड्रॉइंग। सिस्टम से ब्रश। ड्रॉइंग। रंग
- 7. पथ बनाम ज्यामिति ड्रॉइंग
- 8. UINavigationBar बटन आइटम पर टेक्स्ट रंग कैसे बदलें
- 9. जांचने पर System.Windows.Forms.ToolStrip बटन हाइलाइट/पृष्ठभूमि रंग कैसे बदलें?
- 10. एंड्रॉइड में टूलबार बैक बटन का रंग कैसे बदलें?
- 11. MFMailComposeViewController ग्रंथों और बटन छवियों का रंग कैसे बदलें?
- 12. बटन बदलें पर क्लिक करें
- 13. ड्रॉइंग ब्रश में रंग कैसे रीमेप करें?
- 14. चंद्रमा रंग थीम के साथ ग्रहण: बदलें बटन रंग
- 15. सी # एक बटन की पृष्ठभूमि बदलें रंग
- 16. एंड्रॉइड बटन का चयन करें और ड्रॉइंग
- 17. JSeparator का रंग कैसे बदलें?
- 18. CollapsingToolbarLayout: विस्तारित होने पर होम बटन रंग बदलें
- 19. फेसबुक की तरह बटन - फ़ॉन्ट रंग बदलें?
- 20. चयन का रंग बदलें
- 21. ड्रॉइंग इमेज में पथ का उपयोग कैसे करें?
- 22. MFMailComposeViewController में बटन कैसे बदलें?
- 23. बूटस्ट्रैप ग्लाइफिकॉन का रंग कैसे बदलें?
- 24. बटन पर जेएसपी बदलें
- 25. हेक्स रंग कैलकुलेटर: ट्विटर बूटस्ट्रैप बटन के लिए रंग बदलें
- 26. फोकस पर प्लेसहोल्डर रंग कैसे बदलें?
- 27. एक न्यूमेरिक वेक्टर का आकार कैसे बदलें?
- 28. खोजबार रंग कैसे बदलें?
- 29. माउसओवर पर wx.Panel पृष्ठभूमि रंग कैसे बदलें?
- 30. emacs पर कर्सर रंग को कैसे बदलें
आप पूरे वेक्टर टिंट कर सकते हैं (अपनी पसंद के रंग के साथ R.color.headPink बदल), लेकिन एक नहीं पथ घटकों – Blackbelt