2011-11-19 2 views
20

해상도가 1000x600 인 내 안드로이드 응용 프로그램 드로어 블 폴더에 jpg 이미지가 있습니다. 나는 그것을 할 수있는 방법을 1500를 반환 내가 bitMap .getWidth()를 호출이 후이비트 맵 getWidth가 잘못된 값을 반환합니다.

Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image); 

같은 비트 맵 해당 이미지를로드? 그리고 이미지의 오른쪽 폭과 높이를 얻는 방법?

답변

38

이것은 아마도 밀도가 다르기 때문일 수 있습니다. 리소스는 중간 밀도 폴더에 저장되어 있지만 장치는 hdpi입니다. 중간 밀도는 160dpi, 고밀도는 240dpi입니다. 따라서 비트 맵은 원래 1.5 배 크기로 조정됩니다. 자세한 내용은 document on multiple screens을 참조하십시오.

자원을 올바른 밀도로 사용할 수없는 경우 시스템은 기본 자원을로드하고 현재 자원의 밀도와 일치하도록 필요에 따라 기본 자원을 올리거나 내립니다.

고밀도를 고려한 경우 drawable 또는 drawable-mdpi 대신 drawable-hdpi로 입력하십시오.

업데이트 : 당신이, 밀도를 무시 그릴 수-nodpi 폴더에 넣어하려는 경우

. 같은 문서에서 또한 :

사전 크기 조정을 피하는 가장 쉬운 방법은 리소스를 nodpi 구성 한정자를 사용하여 리소스 디렉토리에 저장하는 것입니다. 예를 들어

시스템이 폴더에서 icon.png 비트 맵을 사용
res/drawable-nodpi/icon.png 

는, 현재의 장치 밀도에 기초하여 확장되지 않는다.

+0

저의 경우 스케일링이 필요하지 않습니다. 모든 스크린에서 동일한 크기의 동일한 이미지가 필요합니다. 내 마음에 오는 첫 번째 솔루션은 그 이미지를 3 개의 드로어 블 폴더에 복사하는 것이지만 같은 이미지를 3 부 복사하는 것은 좋지 않습니다. 다른 해결책이 있습니까? –

+2

크기를 조정하지 않으려면 drawable-nodpi 폴더에 넣을 수 있습니다. 더 많은 정보는 여기에 있습니다 : http://developer.android.com/guide/topics/resources/providing-resources.html – Albin

+0

오케이, 대답이 편집되었으며 그 부분이 추가되었습니다. 어쨌든 감사합니다. –

관련 문제