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

(Dimensions: 128 * 128)

(Dimensions: 640 * 428)
자,다음 테스트 시작:
1.
SetScaleType(ImageView.ScaleType.CENTER);
그림 의 원래 크기 가운데 에 표시 하고 그림 의 길이/너비 가 View 의 길이/폭 을 초과 하면 그림 의 가운데 부분 을 캡 처 하여 표시 합 니 다.

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

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

4.
setScaleType(ImageView.ScaleType.FIT_CENTER);
그림 을 비례 에 따라 View 의 너비 로 확대/축소 하여 가운데 로 표시 합 니 다.

5. FIT_START, FIT_END 그림 크기 조정 효과 에 FITCENTER 와 마찬가지 로 표 시 된 위치 만 다 릅 니 다.FITSTART 는 위 에,FITCENTER 가운데,FITEND 는 아래쪽 에 놓 습 니 다.
예 를 들 지 않 겠 습 니 다.
6. FIT_XY
그림 을 비율 에 따라 크기 를 조정 하지 않 고 전체 View 에 그림 을 채 우 는 것 이 목표 입 니 다.


그림 너비 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 대충 이렇게 됐어 요.
사실 centercrop 간단하게 이 기능 을 실현 할 수 있 지만 그 는 자동 으로 높이 를 확장 하지 않 는 다.그 는 그림 의 시각 적 높이 를 용기 높이 로 한 다음 에 용기 커버 디 스 플레이 를 해 야 한다.즉,용기 의 높이 는 비례 에 따라 커지 지 않 고 그림 이 거의 절반 도 안 되 는 모양 만 나타 나 게 한다.만약 에 그림 이 비교적 작다 면 사용 할 수 없 을 것 이다.아니면 동태 적 으로 조정 해 야 한다.그림 사이즈 가 크 면,특히 높이 가 맞 으 면 바로 사용 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.