수색…


소개

ImageView ( android.widget.ImageView )는 Drawables 및 Bitmaps와 같은 이미지 리소스를 표시하고 조작하기위한 뷰입니다.

이 항목에서 설명한 일부 효과를 이미지에 적용 할 수 있습니다. 이미지 소스는 XML 파일 ( layout 폴더) 또는 프로그래밍 방식으로 Java 코드로 설정할 수 있습니다.

통사론

  • setImageResource(int resId) 메소드는 drawable setImageResource(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보다 큰 중심 이미지

강력한 텍스트

ImageView ScaleType - 중앙 자르기

이미지의 두 치수 (너비 및 높이)가 뷰의 해당 치수 (패딩 빼기)와 같거나 커지도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지).

공식 문서

이미지가 컨테이너의 비율과 일치하면 :

여기에 이미지 설명을 입력하십시오.

이미지가 컨테이너보다 넓 으면 이미지를 더 큰 크기 (이 경우 높이)로 확장하고 비율을 변경하지 않고 이미지의 너비를 조정하여 자르게됩니다.

여기에 이미지 설명을 입력하십시오.

ImageView ScaleType - 센터 인 사이드

이미지의 크기 (너비와 높이)가 뷰의 해당 치수 (패딩 빼기)와 동일하거나 작도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지).

공식 문서

이미지를 가운데에 놓고 작은 크기로 크기를 조정합니다. 두 컨테이너 크기가 더 크면 가운데와 동일한 크기로 작동합니다.

센터 1 안에

그러나 크기 중 하나가 작 으면 크기에 맞을 것입니다.

내부 2 센터

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은 다음 값 중 하나 여야합니다.

  1. center : 이미지를 뷰의 center 에 배치하지만 크기 조정을 수행하지 않습니다.

여기에 이미지 설명을 입력하십시오.

  1. centerCrop : 이미지의 크기 (너비와 높이)가 뷰의 해당 치수 (패딩 빼기)와 같거나 커지도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지). 그러면 이미지가 뷰의 중앙에 배치됩니다.

여기에 이미지 설명을 입력하십시오.

  1. centerInside : 이미지의 두 치수 (너비와 높이)가 뷰의 해당 치수 (패딩 빼기)와 같거나 작도록 이미지를 균일하게 비율을 조정합니다 (이미지의 종횡비 유지). 그러면 이미지가 뷰의 중앙에 배치됩니다.

여기에 이미지 설명을 입력하십시오.

  1. matrix : 그리기 할 때 이미지 행렬을 사용하여 크기 조절.

여기에 이미지 설명을 입력하십시오.

  1. fitXY : FILL을 사용하여 이미지의 크기를 조정합니다.

여기에 이미지 설명을 입력하십시오.

  1. fitStart : START를 사용하여 이미지 크기를 조정합니다.

여기에 이미지 설명을 입력하십시오.

  1. fitCenter : CENTER를 사용하여 이미지의 크기를 조정합니다.

여기에 이미지 설명을 입력하십시오.

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow