관련 질문 here on stackoverflow.
이미지가 인터넷에서 다운로드 된 경우 .getIntrinsicWidth()
및 .getIntrinsicHeight()
실제로 이미지의 너비와 높이가 각각 실제 너비와 높이가됩니다.
내재적이라 부르는 이유는 이미지에만 의존하기 때문에 (휴대 전화와 같이) 다른 것에는 의존하기 때문입니다.
아아, 당신이 얻는 것은 모든 상황에서 본질적이지는 않습니다 - 불행히도 이미지 이외의 것에 의존합니다.
여기서 잘못된 (즉, 비 내장) 결과가 나타납니다.의 당신이 당신에게 실행 아이콘의 너비 (픽셀)를 말할 것이다 다음
Log.i("", "ic_launcher intrinsic width " + getResources().getDrawable(R.drawable.ic_launcher).getIntrinsicWidth());
, 기본 런처 아이콘을 사용하고 있다고 가정 해 봅시다. 그러나 어느 것이? - 그 중 몇 개는 drawable-xhdpi 폴더에, 다른 하나는 drawable-hdpi 폴더에 있습니다. 여러분의 장치가 말하자면 xhdpi라면, 96을 제공합니다. 이것은 실제로 버전의 픽셀 너비입니다. drawable-xhdpi 폴더에있는 실행 프로그램 아이콘. 이제 drawable-xhdpi 폴더에있는 아이콘을 삭제하고 다시 실행하십시오 (여전히 xhdpi 장치 (실제 또는 에뮬레이트 된) 사용). 사용되는 이미지는 xhdpi 버전에 "가장 근접"하기 때문에 drawable-hdpi 폴더에 있습니다. 그 아이콘의 픽셀 폭은 72입니다. 그러나 위의 코드는 여전히 96을줍니다 !!!
사용 된 이미지에만 의존하지 않으므로 "내재적"인 것은 아닙니다 (적절한 의미에서).
그래서 내가 게으르다면 각 리소스 아이콘/이미지의 4 가지 버전을 생성하지 않습니다 (단, 1 또는 2를 사용하고 손으로 크기를 조정하는 대신). 언급 한 안드로이드를주의해야합니다 그릇된 명칭.
여기에 정답은 http://stackoverflow.com/questions/6536418/android-why-are-the-width-height-of-the-drawable-in-imageview-wrong – mathheadinclouds