Android
Imageview
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 dennaImageView
. - 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);
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)
Om ImageView är mindre än bilden ändras inte bilden och du kan bara se en del av den
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).
När bilden matchar behållarens proportioner:
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.
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).
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.
Men om en av storleken är små passar den till den storleken.
ImageView ScaleType - FitStart och FitEnd
Skala bilden med START.
Skala bilden med END.
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"/>
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"/>
ImageView ScaleType - FitCenter
Skala bilden med CENTER.
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)
Samma bredd och höjd.
ImageView ScaleType - FitXy
Skala bilden med 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"/>
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:
-
center
:center
bilden i vyn, men utför ingen skalning.
-
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.
-
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.
-
matrix
: Skala med bildmatrisen när du ritar.
-
fitXY
: Skala bilden med FILL .
-
fitStart
: Skala bilden med START .
-
fitCenter
: Skala bilden med CENTER .
-
fitEnd
: Skala bilden med END .
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:
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" />