Android
ImageView
수색…
소개
ImageView ( android.widget.ImageView
)는 Drawables 및 Bitmaps와 같은 이미지 리소스를 표시하고 조작하기위한 뷰입니다.
이 항목에서 설명한 일부 효과를 이미지에 적용 할 수 있습니다. 이미지 소스는 XML 파일 ( layout
폴더) 또는 프로그래밍 방식으로 Java 코드로 설정할 수 있습니다.
통사론
-
setImageResource(int resId)
메소드는 drawablesetImageResource(int resId)
ImageView
의 내용으로 설정합니다. - 사용법 :
imageView.setImageResource(R.drawable.anyImage)
매개 변수
매개 변수 | 기술 |
---|---|
resId | res 폴더의 이미지 파일 이름 (일반적으로 drawable 폴더) |
이미지 리소스 설정
<ImageView
android:id="@+id/imgExample"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
drawable을 XML 속성을 사용하여 ImageView
내용으로 설정합니다.
android:src="@drawable/android2"
프로그래밍 방식으로 drawable을 설정하십시오.
ImageView imgExample = (ImageView) findViewById(R.id.imgExample);
imgExample.setImageResource(R.drawable.android2);
알파 설정
"알파"는 이미지의 불투명도를 지정하는 데 사용됩니다.
XML 속성을 사용하여 알파를 설정합니다.
android:alpha="0.5"
참고 : float 값을 0 (투명)에서 1 (완전히 표시)까지 가져옵니다 .
프로그래밍 방식으로 알파 값 설정 :
imgExample.setAlpha(0.5f);
ImageView ScaleType - 센터
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 ScaleType - 중앙 자르기
이미지의 두 치수 (너비 및 높이)가 뷰의 해당 치수 (패딩 빼기)와 같거나 커지도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지).
이미지가 컨테이너의 비율과 일치하면 :
이미지가 컨테이너보다 넓 으면 이미지를 더 큰 크기 (이 경우 높이)로 확장하고 비율을 변경하지 않고 이미지의 너비를 조정하여 자르게됩니다.
ImageView ScaleType - 센터 인 사이드
이미지의 크기 (너비와 높이)가 뷰의 해당 치수 (패딩 빼기)와 동일하거나 작도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지).
이미지를 가운데에 놓고 작은 크기로 크기를 조정합니다. 두 컨테이너 크기가 더 크면 가운데와 동일한 크기로 작동합니다.
그러나 크기 중 하나가 작 으면 크기에 맞을 것입니다.
ImageView ScaleType - 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"/>
적합
이것은 컨테이너의 가장 작은 크기에 맞을 것이고 끝까지 정렬 할 것입니다.
<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
CENTER를 사용하여 이미지 크기를 조정하십시오.
이렇게하면 이미지를 확장하여 컨테이너와 일치 시키려고 시도하고 이미지를 가운데로 정렬하면 크기가 더 작아집니다.
큰 높이 (너비에 맞추기)
너비와 높이가 같아.
ImageView ScaleType - 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
의 크기에 맞게 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="..."/>
scaleType은 다음 값 중 하나 여야합니다.
-
center
: 이미지를 뷰의center
에 배치하지만 크기 조정을 수행하지 않습니다.
-
centerCrop
: 이미지의 크기 (너비와 높이)가 뷰의 해당 치수 (패딩 빼기)와 같거나 커지도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지). 그러면 이미지가 뷰의 중앙에 배치됩니다.
-
centerInside
: 이미지의 두 치수 (너비와 높이)가 뷰의 해당 치수 (패딩 빼기)와 같거나 작도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지). 그러면 이미지가 뷰의 중앙에 배치됩니다.
-
matrix
: 그리기 할 때 이미지 행렬을 사용하여 크기 조절.
-
fitXY
: FILL을 사용하여 이미지의 크기를 조정합니다.
-
fitStart
: START를 사용하여 이미지 크기를 조정합니다.
-
fitCenter
: CENTER를 사용하여 이미지의 크기를 조정합니다.
-
fitEnd
: END를 사용하여 이미지 크기를 조정합니다.
색조 설정
이미지의 색조를 설정합니다. 기본적으로 색조는 SRC_ATOP
모드를 사용하여 혼합됩니다.
XML 속성을 사용하여 색조를 설정합니다.
android:tint="#009c38"
참고 : "#rgb"
, "#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" />