[java] Picasso를 사용하여 이미지를 전체 너비 및 고정 높이로 크기 조정

항목 중 하나가 ImageViewPicasso를 사용하여로드 되는 세로 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()

이것이 의미하는 바 :

  • fitImageView측정이 끝날 때까지 기다렸다가 크기와 정확히 일치하도록 이미지 크기를 조정하십시오.
  • 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);
            }
        });


답변