새로운 Android 프로젝트를 만들고 파일을 res/drawable
폴더에 넣었습니다. file
명령에 의해보고 된 그 통계는 다음과 같이됩니다. (크기의 1000x846)Android에서 jpg 리소스를로드 할 때 이미지 크기가 변경되는 이유는 무엇입니까?
map.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 200x200, segment length 16, baseline, precision 8, 1000x846, frames 3
이 프로젝트는 최소 SDK 버전 (21) 및 (24)
내가 파일을 열 대상 SDK 버전을 사용 이 (코 틀린)와 같은 (인 뷰 서브 클래스) 내 클래스 :
mBitmap = BitmapFactory.decodeResource(resources, R.drawable.map)
Log.i(TAG, "Our map's size is " + mBitmap.width + "x" + mBitmap.height)
에뮬레이터에서 실행 (480X800 hdpi에는 API 레벨 25) 1500 비트 맵의 크기를보고 x1269 또는 파일의 크기에서 1.5 배로 조정됩니다.
기기 (삼성 Galaxy A3, API 레벨 24)에서 실행하면 2000x1692 크기 또는 2x로 크기가보고됩니다.
왜 이런 일이 발생합니까? 로드 된 비트 맵의 크기는 무엇에 달려 있습니까?
는
감사합니다. 접미사가없는 버전이 'mdpi'의 동의어이며 따라서 크기가 조정된다는 것은 분명하지 않았습니다. 나는 자원의 "기본"원천으로서의 그것의 역할은 또한 "만져서는 안된다"는 것을 의미한다고 생각했다. – Arry
@Arry : 아니요, 죄송합니다. 그 이유는 드로어 블 밀도의 개념이 안드로이드 1.5 또는 1.6까지 추가되지 않았기 때문입니다. Android 1.0 및 1.1에서는 모든 drawable이'res/drawable /'에있었습니다. 이전 버전과의 호환성을 위해 원래 안드로이드 장치에서 사용 된 밀도 인'mdpi'와 동의어로'res/drawable /'를 설정합니다. 이 규칙은 지난 몇 년 동안 거꾸로 호환성을 유지하기 위해 유지되었습니다.구글은 그것에 대해 많이 말하지 않고'res/drawable /'이 범용 목적을위한 것이라는 인상을주는 그들의 안드로이드 스튜디오 템플릿에서 어리석은 일을한다. – CommonsWare