마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ImageView의 크기에 맞게 사진을 가져왔는데 잘리는 이유가 뭘까요?

0 추천

안녕하세요.

사진을 크기에 맞게 ~~/id/{:id}/{:width}/{:height} 이런 식으로 요청할 수 있는 API가 있습니다.

정확히는 저 주소가 사진을 다운로드할 수 있는 url이에요.

 

사진을 이미지뷰에 딱 맞게 전부 보여주고 싶어서, id/1/imageView.width/imageView.height 이런식으로 Glide에 into(url)을 넣어줬는데 이미지가 잘려서 나옵니다.

이유가 뭘까요? 주소에다 적는 크기도 pixel이고 imageView.width도 pixel로 알고 있고 있거든요.

크기를 잘못 계산했을까봐 imageView.doOnPreDraw{}를 사용했는데도 잘 안되네요ㅠㅠ

답변 주시면 정말 감사하겠습니다.

참고로 데이터바인딩 사용했어요! scaleType을 조정해보고, override(imageView.width, ~)를 해봐도 안되더군요..ㅠㅠ

이륙사 (370 포인트) 님이 2022년 3월 26일 질문

1개의 답변

0 추천

ImageView의 width, height는 pixel이 아니고 dp 예요. (Android View는 모두 dp를 기본으로 사용합니다. Canvas API를 사용할 때는  pixel이 기본단위이구요.)

구글 검색하면 변환방법이 나옵니다. 아래 링크면 충분히 설명이 될 듯하네요.

http://www.androidtutorialshub.com/android-convert-dp-px-px-dp/

그리고 IImageview에 adjustViewBounds 를 사용해야 하는지도 체크해 보세요.

android:adjustViewBounds="true"

해당 속성에 대한 설명은 아래 블로그에 잘 나와 있네요.

https://medium.com/mobile-app-development-publication/android-imageview-adjustviewbounds-demystified-2f91ce7fe349

spark (227,530 포인트) 님이 2022년 3월 26일 답변
spark님이 2022년 3월 26일 수정
아 dp였군요 제가 잘못된 글을 봤었나봐요. pixel이래서 이걸로 한참 삽질했는데,,, 매번 감사합니다 갓spark님ㅠㅠ

저는 제 할 일만 해도 정신이 없는데, 항상 남 도와주시는 거 정말 대단하신 것 같아요.
공식 문서를 찾아보니까 View.getWidth(): The width of your view, in pixels.라고 나오네요. pixel 문제는 아닌가봐요ㅠ
아 제가 실수를 했네요. XML 파일에 사용하는 단위와 착각을 했네요. Pixel이 맞네요.
The width of your view, in pixels.

참고로 Layout이 화면에 안착되는 시점에 따라 view.getWidth()를 할 때 0이 반환될 확률이 있습니다.
https://stackoverflow.com/questions/3591784/views-getwidth-and-getheight-returns-0
...