2012-10-15 3 views
3

내 Android 앱에는 크기 나 밀도에 관계없이 모든 화면에서 정확하게 측정해야하는 눈금자가 있습니다. 눈금자는 BitmapFactory을 통해 이미지보기로 설정 한 드로어 블 리소스입니다.모든 화면에서 일관되게 비트 맵의 ​​크기를 결정하는 확실한 방법은 무엇입니까

처음에는 비트 맵을 상대 layout_width이 고정 된 50mm (기본 png의 정확한 너비)로 설정되고 축척 유형이 FIT_CENTER 인 이미지보기로 설정했습니다.

안드로이드 사전 스케일링이 상당히 어려움을 겪었 기 때문에 BitmapFactory 옵션 inScaled = "false"을 사용하여 매니페스트에 android:anyDensity="true"을 선언하여이 프로세스를 비활성화하려고했습니다.

내가 사용하고있는 눈금자 비트 맵은 모두 폭이 50mm 인 320dpi png입니다. 내 생각은 저밀도 화면에서 정확히 필요한 너비로 멋지게 축소 할 수있는 고해상도 이미지를 제공하는 것이 었습니다.

위의 방법은 베타 테스트를 거친 거의 모든 장치에서 성공적으로 작동합니다. 그러나 HTC Evo 4G에서는 눈금자가 너무 크게 보입니다. Android 2.3.5를 실행하는 후자의 장치는 지금까지보고 된 유일한 실패입니다.

답변

0

내 장치에서 Android 2.3.5와 동일한 문제가 발생했습니다. 모든 이미지를 수동으로 다시 조정하여 해결했습니다. 내 이미지는 런타임에 ImageView로 설정되므로 이전에 이미지의 크기를 조정하는 것이 문제가되지 않습니다.

byte[] icon = Icon.getIcon(mContext.getFilesDir()); 
     Bitmap bitmap = BitmapFactory.decodeByteArray(icon, 0, icon.length); 
     int width = LicenseDialog.convertDpToPx(mContext, 48); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     Bitmap.createScaledBitmap(bitmap, width, width, true).compress(CompressFormat.PNG, 100, stream); 
     icon = stream.toByteArray(); 
관련 문제