Zoeken…


Invoering

ImageView ( android.widget.ImageView ) is een weergave voor het weergeven en manipuleren van afbeeldingsbronnen, zoals Drawables en Bitmaps.

Sommige effecten, die in dit onderwerp worden besproken, kunnen op de afbeelding worden toegepast. De afbeeldingsbron kan worden ingesteld in XML-bestand ( layout outmap) of door programmeerbaar in Java-code.

Syntaxis

  • De methode setImageResource(int resId) stelt een setImageResource(int resId) inhoud in als de inhoud van deze ImageView .
  • Gebruik: imageView.setImageResource(R.drawable.anyImage)

parameters

Parameter Beschrijving
resId uw afbeeldingsbestandsnaam in de map res (meestal in een map die kan worden drawable )

Stel Afbeeldingsbron in

<ImageView
 android:id="@+id/imgExample"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 ...
 />

stel een tekenruimte in als inhoud van ImageView met behulp van het XML-kenmerk:

android:src="@drawable/android2"  

programmeerbaar een tekenbaar:

 ImageView imgExample = (ImageView) findViewById(R.id.imgExample);
 imgExample.setImageResource(R.drawable.android2);

Alfa instellen

"alpha" wordt gebruikt om de dekking voor een afbeelding op te geven.

stel alpha in met behulp van het XML-kenmerk:

android:alpha="0.5"  

Opmerking: neemt floatwaarde van 0 (transparant) tot 1 (volledig zichtbaar)

stel alfa programmatisch in:

imgExample.setAlpha(0.5f);

voer hier de afbeeldingsbeschrijving in

ImageView ScaleType - Center

De afbeelding in de ImageView past mogelijk niet precies bij de grootte die aan de container is gegeven. In dat geval kunt u op een aantal manieren het formaat van de afbeelding wijzigen.

Centrum

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

Hierdoor wordt de grootte van de afbeelding niet gewijzigd en wordt deze in de container gecentreerd (Orange = container)

Centrum

In het geval dat de ImageView kleiner is dan de afbeelding, wordt de grootte van de afbeelding niet gewijzigd en kunt u slechts een deel ervan zien

Middenafbeelding groter dan afbeeldingweergave

sterke tekst

ImageView ScaleType - CenterCrop

Schaal de afbeelding gelijkmatig (behoud de beeldverhouding van de afbeelding) zodat beide dimensies (breedte en hoogte) van de afbeelding gelijk zijn aan of groter zijn dan de overeenkomstige dimensie van de weergave (minus opvulling).

Officiële documenten

Wanneer de afbeelding overeenkomt met de verhoudingen van de container:

voer hier de afbeeldingsbeschrijving in

Wanneer de afbeelding breder is dan de container, wordt deze vergroot naar de grotere grootte (in dit geval hoogte) en wordt de breedte van de afbeelding aangepast zonder de verhoudingen te wijzigen, waardoor deze wordt bijgesneden.

voer hier de afbeeldingsbeschrijving in

ImageView ScaleType - CenterInside

Schaal de afbeelding gelijkmatig (behoud de beeldverhouding van de afbeelding) zodat beide dimensies (breedte en hoogte) van de afbeelding gelijk zijn aan of kleiner zijn dan de overeenkomstige dimensie van de weergave (minus opvulling).

Officiële documenten

Het zal de afbeelding centreren en verkleinen naar het kleinere formaat, als beide containergroottes groter zijn, zal het hetzelfde werken als centreren.

midden binnen 1

Maar als een van de maten klein is, past deze in die maat.

midden binnen 2

ImageView ScaleType - FitStart en FitEnd

Schaal de afbeelding met START.

Schaal de afbeelding met END.

Officiële documenten

FitStart

Dit past op de kleinste maat van de container en zal deze uitlijnen op het begin.

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

fit naar boven

fit naar links

FitEnd

Dit past op de kleinste maat van de container en zal deze uitlijnen tot het einde.

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

onderaan passen

past rechts

ImageView ScaleType - FitCenter

Schaal de afbeelding met behulp van CENTER.

Officiële documenten

Dit vergroot de afbeelding om te proberen de container te matchen en deze zal in het midden worden uitgelijnd, het past in het kleinere formaat.

Grotere hoogte (past op breedte)

voer hier de afbeeldingsbeschrijving in

Dezelfde breedte en hoogte.

voer hier de afbeeldingsbeschrijving in

ImageView ScaleType - FitXy

Schaal de afbeelding met FILL.

Officiële documenten

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

voer hier de afbeeldingsbeschrijving in

voer hier de afbeeldingsbeschrijving in

voer hier de afbeeldingsbeschrijving in

Stel het schaaltype in

Bepaalt hoe het formaat van de afbeelding moet worden aangepast of verplaatst om overeen te komen met de grootte van ImageView .

XML-kenmerk:

android:scaleType="..."

ik zal verschillende ImageView illustreren met een vierkante ImageView met een zwarte achtergrond en we willen een rechthoekig tekenbaar op witte achtergrond in ImageView .

 <ImageView
  android:id="@+id/imgExample"
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:background="#000" 
  android:src="@drawable/android2"
  android:scaleType="..."/>

scaleType moet een van de volgende waarden zijn:

  1. center : centreer de afbeelding in de weergave, maar schaal niet.

voer hier de afbeeldingsbeschrijving in

  1. centerCrop : Schaal de afbeelding gelijkmatig (behoud de beeldverhouding van de afbeelding) zodat beide dimensies (breedte en hoogte) van de afbeelding gelijk zijn aan of groter zijn dan de overeenkomstige dimensie van de weergave (minus opvulling). De afbeelding wordt vervolgens gecentreerd in de weergave.

voer hier de afbeeldingsbeschrijving in

  1. centerInside : schaal de afbeelding uniform (behoud de beeldverhouding van de afbeelding) zodat beide dimensies (breedte en hoogte) van de afbeelding gelijk zijn aan of kleiner zijn dan de overeenkomstige dimensie van de weergave (minus opvulling). De afbeelding wordt vervolgens gecentreerd in de weergave.

voer hier de afbeeldingsbeschrijving in

  1. matrix : schaal met behulp van de afbeeldingsmatrix tijdens het tekenen.

voer hier de afbeeldingsbeschrijving in

  1. fitXY : schaal de afbeelding met FILL .

voer hier de afbeeldingsbeschrijving in

  1. fitStart : schaal de afbeelding met START .

voer hier de afbeeldingsbeschrijving in

  1. fitCenter : De afbeelding schalen met CENTER .

voer hier de afbeeldingsbeschrijving in

  1. fitEnd : De afbeelding schalen met END .

voer hier de afbeeldingsbeschrijving in

Tint instellen

Stel een kleur in voor de afbeelding. Standaard wordt de tint gemengd in de SRC_ATOP modus.

tint instellen met XML-kenmerk:

android:tint="#009c38"

Opmerking: Moet een kleurwaarde zijn in de vorm van "#rgb" , "#argb" , "#rrggbb" of "#aarrggbb" .

programmeer tint instellen:

imgExample.setColorFilter(Color.argb(255, 0, 156, 38));

en u kunt dit kleurenfilter wissen:

imgExample.clearColorFilter();

Voorbeeld:

voer hier de afbeeldingsbeschrijving in

MLRoundedImageView.java

Kopieer en plak de volgende klasse in je pakket:

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;
    }
}

Gebruik deze klasse in XML met pakketnaam in plaats van ImageView

<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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow