/ / कैनवास पर छवियों की एक सरणी बनाना - एंड्रॉइड, सरणियों, सरणी सूची, एंड्रॉइड-कैनवास

एक कैनवास पर छवियों की एक सरणी बनाना - एंड्रॉइड, सरणियों, सरणी सूची, एंड्रॉइड-कैनवास

मैं उन चित्रों की एक सरणी बनाने की कोशिश कर रहा हूं, जो एक कैनवास पर खींची जा सकती हैं। यह वही है जो मेरे पास है:

List<Integer> imageHolder = new ArrayList<Integer>();
imageHolder.add((int)R.drawable.bus_1);
imageHolder.add((int)R.drawable.bus_2);
imageHolder.add((int)R.drawable.bus_3);

फिर मैं कोशिश करता हूं और इस तरह की छवियों को अपने ऑनड्रॉ विधि से एक्सेस करता हूं:

protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);


for (int i = 0; i < imageHolder.size(); i++){


canvas.drawBitmap(imageHolder.get(i), 0, 0, null);
}


}

लेकिन मुझे यह कहते हुए एक त्रुटि मिलती है कि मेरे तर्क हैंमेरे कैनवास के लिए लागू नहीं। क्या किसी को पता है कि यह कैसे करना है? मैं यह कैसे करना है पर एक स्पष्टीकरण के लिए सभी देख रहा हूँ और मैं इसे कहीं भी नहीं ढूँढ सकता।

संपादित करें: यह है कि मुझे स्क्रीन पर विभिन्न बिंदुओं पर 3 छवियों को प्रिंट करने के लिए कैसे काम करना पड़ा:

for (int i = 0; i < imageHolder.size(); i++) {
bMap = BitmapFactory.decodeResource(res, imageHolder.get(0));
canvas.drawBitmap(bMap, 100, 100, null);
bMap2 = BitmapFactory.decodeResource(res, imageHolder.get(1));
canvas.drawBitmap(bMap2, 500, 100, null);
bMap3 = BitmapFactory.decodeResource(res, imageHolder.get(2));
canvas.drawBitmap(bMap3, 900, 100, null);
}

उत्तर:

उत्तर № 1 के लिए 1

आप जो कर रहे हैं वह शुरू में एक गुच्छा है पूर्णांकों एक ArrayList के लिए और फिर आप इस पूर्णांक द्वारा पहचाने गए संसाधन का उपयोग करके, इस ArrayList के माध्यम से लूप करने और एक बिटमैप आकर्षित करने का प्रयास करते हैं। समस्या यह है कि पहला तर्क drawBitmap में विधि Canvas वर्ग या तो एक पूर्णांक सरणी रंग या बिटमैप संसाधन होना चाहिए। केवल एक पूर्णांक नहीं, एक की ओर इशारा करते हुए। अधिक जानकारी के लिए, प्रलेखन की जाँच करें.

बिटमैप के रूप में आईडी द्वारा एक विशिष्ट संसाधन प्राप्त करने के लिए आपको यह करने की आवश्यकता है:

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.your_drawable_id);

या आपके मामले में आपके लूप को इस तरह देखने की जरूरत है:

Resources res = getResources(); // Cache them
Bitmap bMap;
for (int i = 0; i < imageHolder.size(); i++){
bMap = BitmapFactory.decodeResource(res, imageHolder.get(i));
canvas.drawBitmap(bMap, 0, 0, null);
}

जवाब के लिए 0 № 2

जबरदस्त हंसी! चेक canvas.drawBitmap पहला पैरामीटर एक बिटमैप ऑब्जेक्ट है, जबकि आपके पास केवल पूर्णांक हैं जो संसाधन को इंगित करते हैं।

आप उपयोग कर सकते हैं:

canvas.drawBitmap(BitmapFactory.decodeResource(getContext().getResources(), imageHolder.get(i)), 0, 0, null);