खोज…


परिचय

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

छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) ताकि छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (शून्य से कम) के बराबर या उससे कम होंगे।

आधिकारिक डॉक्स

यह छवि को केंद्र में रखेगा और इसे छोटे आकार में आकार देगा, यदि दोनों कंटेनर आकार बड़े हैं तो यह केंद्र के समान कार्य करेगा।

1 के अंदर केंद्र

लेकिन यदि कोई एक आकार छोटा है, तो वह उस आकार में फिट होगा।

2 के अंदर केंद्र

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="..."/>

स्केल टाइप निम्नलिखित मानों में से एक होना चाहिए:

  1. center : छवि को दृश्य में केंद्र बनाएं, लेकिन कोई स्केलिंग न करें।

यहाँ छवि विवरण दर्ज करें

  1. centerCrop : छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) इसलिए छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (माइनस पैडिंग) के बराबर या बड़े होंगे। छवि तब दृश्य में केंद्रित होती है।

यहाँ छवि विवरण दर्ज करें

  1. centerInside : छवि को समान रूप से स्केल करें (छवि के पहलू अनुपात को बनाए रखें) ताकि छवि के दोनों आयाम (चौड़ाई और ऊंचाई) दृश्य के संबंधित आयाम (माइनस पैडिंग) के बराबर या उससे कम हो जाएं। छवि तब दृश्य में केंद्रित होती है।

यहाँ छवि विवरण दर्ज करें

  1. matrix : ड्राइंग करते समय छवि मैट्रिक्स का उपयोग करके स्केल।

यहाँ छवि विवरण दर्ज करें

  1. fitXY : FILL का उपयोग करके छवि को स्केल करें।

यहाँ छवि विवरण दर्ज करें

  1. fitStart : START का उपयोग करके छवि को स्केल करें।

यहाँ छवि विवरण दर्ज करें

  1. fitCenter : केंद्र का उपयोग करके छवि को स्केल करें।

यहाँ छवि विवरण दर्ज करें

  1. 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" />


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow