android - एंड्रॉइड-छविदृश्य: setImageBitmap वी.एस. सेटइमेजडाउनेबल




imageview android-bitmap (4)

दोनों तरीकों वैध हैं और एक ही परिणाम प्राप्त। पहली विधि में आप अपने बिटमैप को ड्रॉएबल ऑब्जेक्ट के चारों ओर लपेटते हैं जो कि किसी दृश्य के लिए एक अमूर्त है जिसे व्यू में खींचा जा सकता है।

Drawables के बारे में विशेष बात यह है कि वे आपको ग्राफ़िकल ऑब्जेक्ट पर सभी प्रकार के ऑपरेशन करने देते हैं (स्केलिंग, ट्रांसलेशन, अस्पष्टता आदि)।

एक बिटमैप एक प्रकार का ड्रॉएबल है, आप यहां डिज़ाइन के बारे में अधिक जान सकते हैं: http://developer.android.com/guide/topics/resources/drawable-resource.html

दूसरी विधि में, आप किसी भी ड्रॉ योग्य संबंधित कार्यों के बिना सीधे बिटमैप बिट्स तक पहुंचते हैं और अपने दृश्य पर बस बिटमैप को आकर्षित करते हैं।

आशा है कि यह मदद करता है, चीयर्स, मैक्स

setImageBitmap और setImageDrawable में अंतर क्या है?

मेरे पास एक ऐसी छवि है जो मैं फ़ाइल से गतिशील रूप से सेट करना चाहूंगा। मैंने जो ट्यूटोरियल लिया है, वह कहते हैं कि मेरे Bitmap को BitmapDrawable कनवर्ट करें और सेट setImageDrawable इसे सेट करें। मुझे नोटिस है कि setImageBitmap साथ सीधे Bitmap सेट भी काम करता है, लेकिन मुझे कोई अंतर नहीं पता

Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
BitmapDrawable bitmapDrawable = new BitmapDrawable(image);
imageView.setImageDrawable(bitmapDrawable);

या

Bitmap image = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
imageView.setImageBitmap(image);

वास्तव में, आप अंतर देख सकते हैं, यदि आप कभी-कभी तर्क के रूप में null उपयोग करते हैं:

imageView.setImageDrawable(null);
Drawable d = imageView.getDrawable(); // d == null

imageView.setImageBitmap(null);
Drawable d = imageView.getDrawable(); // d == some BitmapDrawable, != null

इसलिए यदि आप ImageView में एक ड्रॉएबल के अस्तित्व की जांच कर रहे हैं, तो इसका ध्यान रखें।


इन दोनों आंतरिक setImageBitmap बीच कोई अंतर नहीं है, setImageDrawable

नीचे कोड AOSP के ImageView.java से चुना गया है

public void setImageBitmap(Bitmap bm) {
    // if this is used frequently, may handle bitmaps explicitly
    // to reduce the intermediate drawable object
    setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}

मैंने इसके लिए एक लेख लिखा है अपने प्रश्न का उत्तर देने में सक्षम होना चाहते हैं।

https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw

ImageView को निर्दिष्ट करने के लिए ImageView में 4 एपीआई हैं कौन सा उपयोग करने के लिए? अंतर क्या है?

  1. setImage ड्र्रेबल (ड्रायनीय ड्रॉएबल)
  2. setImageBitmap (बिटमैप बीएम)
  3. setImageResource (इंट रिडीड)
  4. setImageURI (यूआरआई यूरी)

नाम से ImageView , एक छवि प्रदर्शित करने के लिए प्रयोग किया जाता है। लेकिन एक छवि क्या है? एक Bitmap एक छवि है, समझने में मुश्किल नहीं है और हम उस उद्देश्य के लिए setImageBitmap उपयोग करते हैं। हालांकि, आंतरिक रूप से, ImageView में एक Drawable लेकिन कोई Bitmap नहीं है और यही setImageDrawable करने योग्य है। जब आप setImageBitmap कॉल setImageBitmap , तो आंतरिक रूप से, पहले बिटमैप BitmapDrawable , जो IS-A setImageDrawable , और उसके बाद setImageDrawable कॉल करें।

यहां कोड है

public void setImageBitmap(Bitmap bm) {
    setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}

तो, 3 और 4 एपीआई के बारे में क्या?

आपको पहले से ही पता होना चाहिए कि एक बिटमैप बनाने के तरीकों के गुच्छे हैं: किसी फ़ाइल पथ से, इनपुट स्ट्रीम से, उरी से, या संसाधन फ़ाइल से।

BitmapFactory.decodeFile(String pathName)
BitmapFactory.decodeStream(Inputstream)
BitmapFactory.decodeResource(Resource res, int id)
BitmapFactory.decodeByteArray(byte[] data)

इस के बारे में पता है, setImageResource / setImageUri समझने में आसान है setImageResource समान है।

योग करने के लिए, setImageDrawable आदिम फ़ंक्शन अन्य एपीआई निर्भर हैं। अन्य 3 केवल सहायक विधियों को कम कोड लिखने के लिए हैं।

इसके अलावा, यह ध्यान रखना बहुत जरूरी है कि ImageView वास्तव में है- एक Drawable , जो जरूरी नहीं कि एक BitmapDrawable ! आप छवि को देखने के लिए किसी भी Drawable सेट कर सकते हैं।

जावा एपीआई के माध्यम से Drawable सेट करने के अलावा, आप एक्सएमएल एट्रिब्यूशन का उपयोग करके ImageView Drawable लिए स्रोत को सेट कर सकते हैं। नीचे उदाहरण देखें। ध्यान दें कि आकार या तो एक छवि फ़ाइल (.पीएनजी, .jpg, .bmp) या xml फ़ाइल हो सकती है।





android-bitmap