그림 설명 Android ImageView 클래스 의 Scale Type 속성 설정

5256 단어 AndroidImageView
ScaleType 설정 도해
그림 과 글 이 잘 어 울 려 모든 속성의 효 과 를 뚜렷하게 볼 수 있다.
센 터 느낌CROP 는 비교적 유용 합 니 다.길이 와 너비 가 ImageView 에 자동 으로 적응 합 니 다.전체 그림 은 전체 영역 을 자동 으로 줄 여 채 우 고 가운데 에 표시 합 니 다.(높이 와 너비 가 반드시 view 의 크기 가 아 닙 니 다)예전 에 JS 로 웹 페이지 에서 이 루어 졌 습 니 다.
안 드 로 이 드 는 처음에 자바 로 스스로 이 효 과 를 실현 하려 고 했 는데 너무 번 거 로 워 서 시스템 자체 가 훨씬 편리 할 줄 몰 랐 다.
ImageView 의 Scaletype 은 그림 이 View 에 표 시 될 때의 모습 을 결정 합 니 다.예 를 들 어 어떤 비율의 크기 를 조정 하고 그림 의 전체 또는 부분 을 표시 하 는 지 등 입 니 다.
설정 방식 은 다음 과 같 습 니 다:
1.layot xml 에서 android:scaleType="CENTER"를 정의 합 니 다.
2.또는 코드 에서 imageView.setScale Type(ImageView.Scale Type.CENTER)을 호출 합 니 다.
다음은 Scale Type 의 값 과 대응 하 는 디 스 플레이 효 과 를 가장 직관 적 인 방식 인 진도 로 보 여 주 는 방법 으로 설명 한다.
우선,테스트 에 사 용 된 원본 그림 입 니 다.
2016319165523086.gif (128×128)
(Dimensions: 128 * 128)
2016319170041109.jpg (640×428)
(Dimensions: 640 * 428)
자,다음 테스트 시작:
1.

SetScaleType(ImageView.ScaleType.CENTER);
그림 의 원래 크기 가운데 에 표시 하고 그림 의 길이/너비 가 View 의 길이/폭 을 초과 하면 그림 의 가운데 부분 을 캡 처 하여 표시 합 니 다.
2016319165644737.gif (247×410) 2016319165703563.gif (249×411)
2.

SetScaleType(ImageView.ScaleType.CENTER_CROP);
비례 에 따라 그림 의 size 를 가운데 로 확대 하여 그림 의 길이(너비)가 View 의 길이(너비)보다 크 거나 같 게 합 니 다.
2016319165723054.gif (247×411) 2016319165741339.gif (247×410)
3.

setScaleType(ImageView.ScaleType.CENTER_INSIDE);
그림 의 내용 을 전체 가운데 로 표시 합 니 다.비례 에 따라 축소 하거나 원래 의 size 를 통 해 그림 의 길이/너비 가 View 의 길이/너비 보다 작 거나 작 습 니 다.
2016319165800917.gif (245×405) 2016319165812622.gif (245×405)
4.

setScaleType(ImageView.ScaleType.FIT_CENTER);
그림 을 비례 에 따라 View 의 너비 로 확대/축소 하여 가운데 로 표시 합 니 다.
2016319165829887.gif (245×405) 2016319165844319.jpg (245×405)
5. FIT_START, FIT_END 그림 크기 조정 효과 에 FITCENTER 와 마찬가지 로 표 시 된 위치 만 다 릅 니 다.FITSTART 는 위 에,FITCENTER 가운데,FITEND 는 아래쪽 에 놓 습 니 다.
예 를 들 지 않 겠 습 니 다.
6. FIT_XY
그림 을 비율 에 따라 크기 를 조정 하지 않 고 전체 View 에 그림 을 채 우 는 것 이 목표 입 니 다.
2016319165902444.gif (244×402) 2016319165917673.jpg (243×402)
그림 너비 100%ImageView 너비 및 높이 비례 자동 신축 실현
ListView 에서 이미지 너비 100%를 실현 하기 위해 ImageView 용기 너비 에 적응 하고 높이 를 자동 으로 비례 에 따라 신축 하 는 기능 을 하기 위해 많은 자 료 를 찾 아 보 았 지만 오후 내 내 기 존의 방법 을 찾 지 못 했 습 니 다.하지만 결론 이 난 것 같 습 니 다.바로:
안 드 로 이 드 자체 가 이런 효 과 를 실현 할 수 없 으 며,오직 자신 만 이 풍족 하 게 생활 할 수 있다.
scale Type 속성 을 사용 하여 view 에서 그림 의 크기 조정 방식 을 설정 합 니 다.fitcenter 는 실현 할 수 있 습 니 다.결 과 는 어 이 없 었 습 니 다.영문 도 모 르 고 너비 가 용기 너비 에 부합 되 지 못 했 습 니 다.양쪽 은 모두 공백 구역 입 니 다.
해결 방법:
1.  아니면 scale Type 을 이용 해 야 돼 요.  center_crop 효 과 는 그림 이 항상 비례 에 따라 용 기 를 채 울 수 있 고 빈 공간 을 남기 지 않 습 니 다.
2.  남 은 가장 중요 한 기능 은 이미지 뷰 용기 의 높이 를 동적 으로 설정 하 는 것 이다.이렇게 하면 그림 이 가능 한 한 완전 하 게 나타 날 수 있 고 max Height 의 효 과 를 실현 할 수 있다.만약 에 그림 의 높이 비례 가 너무 크 면 목록 을 너무 길 게 끌 지 않 는 다.

int maxHeight = ZUI.dp2px(mContext, 300); 
int height = (int) ((float) view.getWidth()/drawable.getMinimumWidth() * drawable.getMinimumHeight()); 
if (height > maxHeight) height = maxHeight; 
view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, height)); 

그 중에서 view 는 ImageView 그림 보기 용기 대상 이 고 drawable 은 표시 할 그림 자원 입 니 다.
drawable.getMinimumWidth()  drawable.get Minimum Height()는 화면 에 있 는 그림 을 가 져 오 는 시각 적 높이 너비 입 니 다.그림 의 원시 적 인 너비 가 아니 라 화면의 픽 셀 밀도 와 관련 이 있 습 니 다.아마 이 모양 일 것 입 니 다.부동 소수점 수치 유형 을 사용 해 야 합 니 다.그렇지 않 으 면 1 의 배수 로 바 뀔 수 있 습 니 다.
dp 값 을 픽 셀 값 으로 바 꿉 니 다.자바 코드 에서 작 동 하 는 너비 가 픽 셀 값 이 고 스타일 에 서 는 dip 로 화면 을 호 환 하기 때 문 입 니 다.

public static int dp2px(Context context, int dp) 
{ 
  float scale = context.getResources().getDisplayMetrics().density; 
  return (int) (dp * scale + 0.5f); 
} 

ok 대충 이렇게 됐어 요.
2016319170104515.jpg (480×800)
사실 centercrop  간단하게 이 기능 을 실현 할 수 있 지만 그 는 자동 으로 높이 를 확장 하지 않 는 다.그 는 그림 의 시각 적 높이 를 용기 높이 로 한 다음 에 용기 커버 디 스 플레이 를 해 야 한다.즉,용기 의 높이 는 비례 에 따라 커지 지 않 고 그림 이 거의 절반 도 안 되 는 모양 만 나타 나 게 한다.만약 에 그림 이 비교적 작다 면 사용 할 수 없 을 것 이다.아니면 동태 적 으로 조정 해 야 한다.그림 사이즈 가 크 면,특히 높이 가 맞 으 면 바로 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기