मैं जोसिप के जवाब की कोशिश की लेकिन चाहे ऑफसेट पैरामीटर 1 या 0 गया था की परवाह किए बिना मेरे लिए काम नहीं होता है, - तैयार बिटमैप सिर्फ मूल रंग में दिखाई दिया।
हालांकि, इस काम किया:
// You have to copy the bitmap as any bitmaps loaded as drawables are immutable
Bitmap bm = ImageLoader.getInstance().loadImageSync("drawable://" + drawableId, o)
.copy(Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
ColorFilter filter = new PorterDuffColorFilter(ContextCompat.getColor(this, R.color.COLOR_1_DARK), PorterDuff.Mode.SRC_IN);
paint.setColorFilter(filter);
Canvas canvas = new Canvas(bm);
canvas.drawBitmap(bm, 0, 0, paint);
अद्यतन 1
जबकि अच्छी तरह से ऊपर काम करता है और मामलों का एक बहुत में उपयोगी है, अगर आप सिर्फ एक का मुख्य रंग बदलना चाहते हैं imageView drawable, जो सेशन किया था, तो आप सिर्फ उपयोग कर सकते हैं:
imgView.setColorFilter(ContextCompat.getColor(this, R.color.COLOR_1_DARK));
यदि आप ne और अधिक लचीलापन एड या इस वांछित प्रभाव नहीं दे करता है, वहाँ एक अधिभार है कि आप PorterDuff Mode बदलने के लिए जब तक आप आप क्या कर रहे हैं पाने के लिए अनुमति देता है के बाद:
imgView.setColorFilter(ContextCompat.getColor(this, R.color.COLOR_1_DARK), PorterDuff.Mode.SRC_ATOP);
अद्यतन 2
एक और अच्छा उपयोग अगर मैं हाल ही में Google मानचित्र v2 मार्कर आइकन की उपस्थिति को अनुकूलित कर रहा हूं। मार्कर पर छोटे/बड़े आइकन (उदाहरण के लिए) अनुमति देने के लिए 2 ग्राफिक्स का उपयोग करने के लिए, लेकिन गतिशील रूप से उनके रंग को बदलकर उन 2 ग्राफिक्स पर रंगों की एक श्रृंखला भी। मेरे मामले में मैं एक ClusterRenderer अंदर इस कर रहा था के रूप में मार्कर भी क्लस्टर रहे थे, लेकिन यह एक नियमित रूप से मैप मार्कर के साथ उसी तरह इस्तेमाल किया जा सकता:
@Override
protected void onBeforeClusterItemRendered(MyClusterItem item, MarkerOptions markerOptions) {
try {
int markerColor = item.getColor();
Bitmap icon;
if (item.isFeatured()) {
// We must copy the bitmap or we get an exception "Immutable bitmap passed to Canvas constructor"
icon = BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_marker_large).copy(Bitmap.Config.ARGB_8888, true);
} else {
// We must copy the bitmap or we get an exception "Immutable bitmap passed to Canvas constructor"
icon = BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_marker_small).copy(Bitmap.Config.ARGB_8888, true);
}
Paint paint = new Paint();
ColorFilter filter = new PorterDuffColorFilter(ContextCompat.getColor(context, markerColor), PorterDuff.Mode.SRC_IN);
paint.setColorFilter(filter);
Canvas canvas = new Canvas(icon);
canvas.drawBitmap(icon, 0, 0, paint);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));
} catch (Exception ex) {
ex.printStackTrace();
}
}
हाय, मैं एक ही समस्या है, लेकिन मैं किसी भी विचार नहीं मिल रहा है छवि रंग बदलने के बारे में। धन्यवाद, एंड्रॉइडवोग –