본문 바로가기

JAVA/Android

[JAVA][Android] ImageView 영역에 원하는 radius값을 반영하는 setOutlineProvider

이번 포스팅은 이미지뷰에 scaleType-centerCrop이 적용되지 않을 경우 사용할 수 있는

setOutlineProvider 메소드를 정리한다.

 

scaleType 속성이 어떤 경우에 작동하지 않는 건지는 .. 잘 모르겠음

 

아래는 적용한 소스다.

imageView.setOutlineProvider(new ViewOutlineProvider() {
    @Override
    public void getOutline(View view, Outline outline) {
        outline.setRoundRect(8,8,view.getWidth()-8,view.getHeight()-8,12);
    }
});
imageView.setClipToOutline(true);

선언한 ImageView 객체에 setOutlinePovider 메소드를 적용하면 된다.

 

getOutline 내부에 있는 setRoundRect에 원하는 영역과 radius 수치를 작성해주면 되는데,

주의할 점은 사용할 ImageView에 border가 있는 경우 그 영역을 제외하고

이미지를 표시할 영역의 크기 만큼만 설정해 주어야 한다.

(1~4번째 인자를 통해서 : 순서대로 left, top, right, bottom 영역이다.)

 

마지막 인자에는 원하는 radius 수치를 입력하면 된다.

마무리로 ImageView에 setClipToOutline 을 true값으로 설정한 뒤 작동시키면

입력한 radius 값이 반영된 걸 확인할 수 있다.