Android
imageView
खोज…
परिचय
ImageView ( android.widget.ImageView
) चित्र और बिटमैप जैसे छवि संसाधनों को प्रदर्शित और हेरफेर करने के लिए एक दृश्य है।
इस विषय में चर्चा किए गए कुछ प्रभाव, छवि पर लागू किए जा सकते हैं। छवि स्रोत XML फ़ाइल ( layout
फ़ोल्डर) या जावा कोड में प्रोग्रामेटिक रूप से सेट किया जा सकता है।
वाक्य - विन्यास
- विधि
setImageResource(int resId)
इसImageView
की सामग्री के रूप में एकsetImageResource(int resId)
सेट करता है। - उपयोग:
imageView.setImageResource(R.drawable.anyImage)
पैरामीटर
पैरामीटर | विवरण |
---|---|
resId | res फ़ोल्डर में आपकी छवि फ़ाइल का नाम (आमतौर पर drawable फ़ोल्डर में) |
छवि संसाधन सेट करें
<ImageView
android:id="@+id/imgExample"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
XML विशेषता का उपयोग करके ImageView
की सामग्री के रूप में एक ड्रॉबल सेट करें:
android:src="@drawable/android2"
एक पठनीय प्रोग्राम सेट करें:
ImageView imgExample = (ImageView) findViewById(R.id.imgExample);
imgExample.setImageResource(R.drawable.android2);
अल्फा सेट करें
"अल्फा" का उपयोग किसी छवि के लिए अस्पष्टता निर्दिष्ट करने के लिए किया जाता है।
XML विशेषता का उपयोग करके अल्फा सेट करें:
android:alpha="0.5"
नोट: 0 (पारदर्शी) से 1 तक फ्लोट मान लेता है (पूरी तरह से दिखाई देता है)
अल्फा प्रोग्रामेटिकली सेट करें:
imgExample.setAlpha(0.5f);
ImageView स्केलपाइप - केंद्र
ImageView में निहित छवि कंटेनर को दिए गए सटीक आकार में फिट नहीं हो सकती है। उस स्थिति में, फ़्रेम आपको कई तरीकों से छवि को आकार देने की अनुमति देता है।
केंद्र
<ImageView android:layout_width="20dp"
android:layout_height="20dp"
android:src="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:scaleType="center"
android:background="@android:color/holo_orange_light"/>
यह छवि का आकार नहीं बदलेगा, और यह इसे कंटेनर के अंदर केन्द्रित करेगा (ऑरेंज = कंटेनर)
उस स्थिति में जब ImageView छवि से छोटा है, छवि का आकार बदला नहीं जाएगा और आप केवल इसका एक हिस्सा देख पाएंगे
मजबूत पाठ
ImageView स्केलपाइप - CenterCrop
छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) ताकि छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (शून्य से कम) के बराबर या उससे अधिक हो जाएंगे।
जब छवि कंटेनर के अनुपात से मेल खाती है:
जब छवि कंटेनर से अधिक चौड़ी होती है, तो यह इसे बड़े आकार (इस मामले में ऊंचाई) में विस्तारित करेगा और छवि के चौड़ाई को समायोजित किए बिना इसे अनुपात में बदल देगा, जिससे यह फसल हो जाएगी।
छवि दृश्य स्केल - CenterInside
छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) ताकि छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (शून्य से कम) के बराबर या उससे कम होंगे।
यह छवि को केंद्र में रखेगा और इसे छोटे आकार में आकार देगा, यदि दोनों कंटेनर आकार बड़े हैं तो यह केंद्र के समान कार्य करेगा।
लेकिन यदि कोई एक आकार छोटा है, तो वह उस आकार में फिट होगा।
ImageView स्केल टाइप - FitStart और FitEnd
START का उपयोग करके छवि को स्केल करें।
END का उपयोग करके छवि को स्केल करें।
FitStart
यह कंटेनर के सबसे छोटे आकार के लिए फिट होगा, और यह इसे शुरू में संरेखित करेगा।
<ImageView android:layout_width="200dp"
android:layout_height="200dp"
android:src="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:scaleType="fitStart"
android:layout_gravity="center"
android:background="@android:color/holo_orange_light"/>
FitEnd
यह कंटेनर के सबसे छोटे आकार के लिए फिट होगा, और यह इसे अंत तक संरेखित करेगा।
<ImageView android:layout_width="200dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:scaleType="fitEnd"
android:layout_gravity="center"
android:background="@android:color/holo_orange_light"/>
इमेज व्यू स्केल - FitCenter
केंद्र का उपयोग करके छवि को स्केल करें।
यह कंटेनर से मिलान करने की कोशिश करने के लिए छवि का विस्तार करता है और इसे केंद्र में संरेखित करेगा, यह छोटे आकार में फिट होगा।
बड़ी ऊंचाई (चौड़ाई में फिट)
एक ही चौड़ाई और ऊंचाई।
ImageView स्कैलपाइप - FitXy
FILL का उपयोग करके छवि को स्केल करें।
<ImageView android:layout_width="100dp"
android:layout_height="200dp"
android:src="@mipmap/ic_launcher"
android:id="@+id/imageView"
android:scaleType="fitXY"
android:layout_gravity="center"
android:background="@android:color/holo_orange_light"/>
स्केल प्रकार सेट करें
यह नियंत्रित करता है कि ImageView
के आकार से मेल खाने के लिए छवि को कैसे आकार दिया जाए या स्थानांतरित किया जाए।
XML विशेषता:
android:scaleType="..."
मैं एक वर्ग ImageView
साथ अलग-अलग पैमाने के प्रकारों का वर्णन करूँगा, जिसमें एक काली पृष्ठभूमि है और हम ImageView
दृश्य में सफेद पृष्ठभूमि में एक आयताकार चित्रण प्रदर्शित करना चाहते हैं।
<ImageView
android:id="@+id/imgExample"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#000"
android:src="@drawable/android2"
android:scaleType="..."/>
स्केल टाइप निम्नलिखित मानों में से एक होना चाहिए:
-
center
: छवि को दृश्य में केंद्र बनाएं, लेकिन कोई स्केलिंग न करें।
-
centerCrop
: छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) इसलिए छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (माइनस पैडिंग) के बराबर या बड़े होंगे। छवि तब दृश्य में केंद्रित होती है।
-
centerInside
: छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) ताकि छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (माइनस पैडिंग) के बराबर या उससे कम हो जाएं। छवि तब दृश्य में केंद्रित होती है।
-
matrix
: ड्राइंग करते समय छवि मैट्रिक्स का उपयोग करके स्केल।
-
fitXY
: FILL का उपयोग करके छवि को स्केल करें।
-
fitStart
: START का उपयोग करके छवि को स्केल करें।
-
fitCenter
: केंद्र का उपयोग करके छवि को स्केल करें।
-
fitEnd
: END का उपयोग करके छवि को स्केल करें।
टिंट सेट करें
छवि के लिए एक टिनिंग रंग सेट करें। डिफ़ॉल्ट रूप से, SRC_ATOP
मोड का उपयोग करके टिंट मिश्रण होगा।
XML विशेषता का उपयोग करके टिंट सेट करें:
android:tint="#009c38"
नोट: "#rgb"
, "#argb"
, "#rrggbb"
"#argb"
"#rrggbb"
, या "#aarrggbb"
के रूप में, एक रंग मान होना चाहिए।
प्रोग्राम को व्यवस्थित रूप से सेट करें:
imgExample.setColorFilter(Color.argb(255, 0, 156, 38));
और आप इस रंग फ़िल्टर को साफ़ कर सकते हैं:
imgExample.clearColorFilter();
उदाहरण:
MLRoundedImageView.java
अपने पैकेज में कक्षा के बाद कॉपी और पेस्ट करें:
public class MLRoundedImageView extends ImageView {
public MLRoundedImageView(Context context) {
super(context);
}
public MLRoundedImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MLRoundedImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if (drawable == null) {
return;
}
if (getWidth() == 0 || getHeight() == 0) {
return;
}
Bitmap b = ((BitmapDrawable) drawable).getBitmap();
Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);
int w = getWidth(), h = getHeight();
Bitmap roundBitmap = getCroppedBitmap(bitmap, w);
canvas.drawBitmap(roundBitmap, 0, 0, null);
}
public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {
Bitmap sbmp;
if (bmp.getWidth() != radius || bmp.getHeight() != radius) {
float smallest = Math.min(bmp.getWidth(), bmp.getHeight());
float factor = smallest / radius;
sbmp = Bitmap.createScaledBitmap(bmp, (int)(bmp.getWidth() / factor), (int)(bmp.getHeight() / factor), false);
} else {
sbmp = bmp;
}
Bitmap output = Bitmap.createBitmap(radius, radius,
Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xffa19774;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, radius, radius);
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));
canvas.drawCircle(radius / 2 + 0.7f,
radius / 2 + 0.7f, radius / 2 + 0.1f, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(sbmp, rect, rect, paint);
return output;
}
}
ImageView
बजाय पैकेज नाम के साथ XML में इस वर्ग का उपयोग करें
<com.androidbuts.example.MLRoundedImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />