항목 중 하나가 ImageView
Picasso를 사용하여로드 되는 세로 LinearLayout이 있습니다 . 이미지의 너비를 전체 장치 너비로 올리고 이미지의 중앙 부분을 고정 된 높이 (150dp)로 표시해야합니다. 현재 다음 코드가 있습니다.
Picasso.with(getActivity())
.load(imageUrl)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.resize(screenWidth, imageHeight)
.centerInside()
.into(imageView);
어떤 값을 입력 screenWidth
하고 imageHeight
(= 150dp)?
답변
당신이 찾고있는:
.fit().centerCrop()
이것이 의미하는 바 :
fit
–ImageView
측정이 끝날 때까지 기다렸다가 크기와 정확히 일치하도록 이미지 크기를 조정하십시오.centerCrop
-이미지가 크기를 채울 때까지 가로 세로 비율에 맞게 이미지의 크기를 조정하십시오. 크기가 정확히 일치하도록 위쪽과 아래쪽 또는 왼쪽과 오른쪽을 자릅니다.
답변
어떤 경우에는 fit ()이 쓸모가 없습니다. 너비 및 높이 측정이 끝날 때까지 기다려야합니다. 따라서 globallayoutlistener를 사용할 수 있습니다. 예를 들어;
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
Picasso.with(getActivity())
.load(imageUrl)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.resize(screenWidth, imageHeight)
.fit
.centerInside()
.into(imageView);
imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});