मेरी एक छवि है res/drawable/test.png
(R.drawable.test)।
मैं इस इमेज को एक फंक्शन में पास करना चाहता हूँ Drawable
, जो स्वीकार करता है , जैसे mButton.setCompoundDrawables()
।
तो मैं एक छवि संसाधन को एक में कैसे बदल सकता हूं Drawable
?
मेरी एक छवि है res/drawable/test.png
(R.drawable.test)।
मैं इस इमेज को एक फंक्शन में पास करना चाहता हूँ Drawable
, जो स्वीकार करता है , जैसे mButton.setCompoundDrawables()
।
तो मैं एक छवि संसाधन को एक में कैसे बदल सकता हूं Drawable
?
जवाबों:
आपकी गतिविधि का तरीका getResource होना चाहिए। करना:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
यह कोड हटा दिया गया है:
Drawable drawable = getResources().getDrawable( R.drawable.icon );
इसके बजाय इसका उपयोग करें:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(जहां तीसरा पैराग्राफ एक वैकल्पिक थीम उदाहरण है)।
getDrawable (int id)
विधि एपीआई 22 के रूप में मूल्यह्रास हुआ है।
इसके बजाय आपको getDrawable (int id, Resources.Theme theme)
एपीआई 21+ के लिए उपयोग करना चाहिए
कोड कुछ इस तरह दिखेगा।
Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
myDrawable = context.getResources().getDrawable(id);
}
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
मैं यह जोड़ना चाहूंगा कि अगर आपको getDrawable (...) का उपयोग करते समय "पदावनत" संदेश मिल रहा है, तो आपको इसके बजाय समर्थन लाइब्रेरी से निम्न विधि का उपयोग करना चाहिए।
ContextCompat.getDrawable(getContext(),R.drawable.[name])
इस विधि का उपयोग करते समय आपको getResources () का उपयोग करने की आवश्यकता नहीं है।
यह कुछ करने जैसा है
Drawable mDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
mDrawable = ContextCompat.getDrawable(getContext(),R.drawable.[name]);
} else {
mDrawable = getResources().getDrawable(R.id.[name]);
}
यह लॉलीपॉप के पूर्व और बाद के दोनों संस्करणों पर काम करता है।
यदि आप उस दृश्य से चित्रण प्राप्त करने का प्रयास कर रहे हैं जहां छवि सेट की गई है,
ivshowing.setBackgroundResource(R.drawable.one);
तब ड्रॉबल केवल निम्न कोड के साथ शून्य मान लौटाएगा ...
Drawable drawable = (Drawable) ivshowing.getDrawable();
इसलिए, यदि आप किसी विशेष दृश्य से ड्रॉबल प्राप्त करना चाहते हैं, तो निम्नलिखित कोड के साथ छवि को सेट करना बेहतर है।
ivshowing.setImageResource(R.drawable.one);
इसके बाद ही हम वास्तव में परिवर्तित कर पाएंगे।
यदि आप एक टुकड़े से विरासत में मिले हैं, तो आप कर सकते हैं:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)