Sök…


Introduktion

ImageView ( android.widget.ImageView ) är en vy för att visa och manipulera bildresurser, till exempel Drawables och Bitmaps.

Vissa effekter, som diskuteras i detta ämne, kan tillämpas på bilden. Bildkällan kan ställas in i XML-fil ( layout mapp) eller via programmering i Java-kod.

Syntax

  • Metoden setImageResource(int resId) ställer in en dragbar som innehållet i denna ImageView .
  • Användning: imageView.setImageResource(R.drawable.anyImage)

parametrar

Parameter Beskrivning
resId ditt bildfilnamn i res mappen (vanligtvis i drawable mapp)

Ställ in bildresurs

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

ställa in en dragbar som innehåll i ImageView med XML-attribut:

android:src="@drawable/android2"  

ställa in ett program som kan dras:

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

Ställ in alfa

"alpha" används för att specificera opaciteten för en bild.

ställa in alfa med XML-attribut:

android:alpha="0.5"  

Obs: tar floatvärdet från 0 (transparent) till 1 (helt synligt)

ställa in alfabetisk:

imgExample.setAlpha(0.5f);

ange bildbeskrivning här

ImageView ScaleType - Center

Bilden i ImageView kanske inte passar den exakta storleken som anges i behållaren. I så fall låter ramen dig ändra storlek på bilden på ett antal sätt.

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

Detta ändrar inte storleken på bilden, och den kommer att centreras inuti behållaren (Orange = behållare)

Centrum

Om ImageView är mindre än bilden ändras inte bilden och du kan bara se en del av den

Centerbild större än imageView

stark text

ImageView ScaleType - CenterCrop

Skala bilden enhetligt (bibehålla bildens bildförhållande) så att båda dimensioner (bredd och höjd) på bilden kommer att vara lika med eller större än motsvarande dimension på vyn (minus stoppning).

Officiella dokument

När bilden matchar behållarens proportioner:

ange bildbeskrivning här

När bilden är bredare än behållaren kommer den att utvidgas till större storlek (i detta fall höjd) och justera bildens bredd utan att ändra dess proportioner och få den att skära.

ange bildbeskrivning här

ImageView ScaleType - CenterInside

Skala bilden enhetligt (bibehålla bildens bildförhållande) så att båda dimensioner (bredd och höjd) på bilden kommer att vara lika med eller mindre än motsvarande dimension på vyn (minus stoppning).

Officiella dokument

Det kommer att centrera bilden och ändra storleken på den till mindre storlek, om båda behållarstorlekarna är större kommer det att fungera på samma sätt som mitt.

centrum inuti 1

Men om en av storleken är små passar den till den storleken.

mitt inne i 2

ImageView ScaleType - FitStart och FitEnd

Skala bilden med START.

Skala bilden med END.

Officiella dokument

FitStart

Detta passar till den minsta storleken på behållaren, och den kommer att anpassas till början.

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

passar till toppen

passar till vänster

FitEnd

Detta passar till den minsta storleken på behållaren, och den kommer att anpassas till slutet.

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

passar till botten

passar till höger

ImageView ScaleType - FitCenter

Skala bilden med CENTER.

Officiella dokument

Detta expanderar bilden för att försöka matcha behållaren och den kommer att anpassas till mitten, den passar till mindre storlek.

Större höjd (passar till bredd)

ange bildbeskrivning här

Samma bredd och höjd.

ange bildbeskrivning här

ImageView ScaleType - FitXy

Skala bilden med FILL.

Officiella dokument

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

ange bildbeskrivning här

ange bildbeskrivning här

ange bildbeskrivning här

Ställ in skala

Kontrollerar hur bilden ska ändras eller flyttas för att matcha storleken på ImageView .

XML-attribut:

android:scaleType="..."

Jag illustrerar olika skaltyper med en fyrkantig ImageView som har svart bakgrund och vi vill visa en rektangulär dragbar i vit bakgrund i ImageView .

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

skaletyp måste vara ett av följande värden:

  1. center : center bilden i vyn, men utför ingen skalning.

ange bildbeskrivning här

  1. centerCrop : Skala bilden enhetligt (bibehålla bildens bildförhållande) så att både dimensioner (bredd och höjd) på bilden kommer att vara lika med eller större än motsvarande dimension på vyn (minus stoppning). Bilden är sedan centrerad i vyn.

ange bildbeskrivning här

  1. centerInside : Skala bilden enhetligt (bibehålla bildens bildförhållande) så att både dimensioner (bredd och höjd) på bilden kommer att vara lika med eller mindre än motsvarande dimension på vyn (minus stoppning). Bilden är sedan centrerad i vyn.

ange bildbeskrivning här

  1. matrix : Skala med bildmatrisen när du ritar.

ange bildbeskrivning här

  1. fitXY : Skala bilden med FILL .

ange bildbeskrivning här

  1. fitStart : Skala bilden med START .

ange bildbeskrivning här

  1. fitCenter : Skala bilden med CENTER .

ange bildbeskrivning här

  1. fitEnd : Skala bilden med END .

ange bildbeskrivning här

Ställ in nyans

Ställ in en färgfärg för bilden. Som standard blandas SRC_ATOP med SRC_ATOP läget.

ställa in nyans med XML-attribut:

android:tint="#009c38"

Obs! Måste vara ett färgvärde i form av "#rgb" , "#argb" , "#rrggbb" eller "#aarrggbb" .

ställa in nyans programmatiskt:

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

och du kan rensa detta färgfilter:

imgExample.clearColorFilter();

Exempel:

ange bildbeskrivning här

MLRoundedImageView.java

Kopiera och klistra in följande klass i ditt paket:

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

Använd denna klass i XML med paketnamn istället för 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow