3

私の Android アプリには、サイズや密度に関係なく、すべての画面で正確に測定する必要がある定規があります。ルーラーは、 を介して画像ビューに設定したドローアブル リソースですBitmapFactory

私の最初のアプローチは、ビットマップを画像ビューにlayout_width設定することでした。その相対値は固定の 50mm (基礎となる png の正確な幅) に設定され、スケール タイプはFIT_CENTERです。

Android の事​​前スケーリングが非常に妨げになることがわかったので、オプションandroid:anyDensity="true"の使用と組み合わせてマニフェストで宣言することにより、このプロセスを無効にしようとしました。BitmapFactoryinScaled = "false"

私が使用している定規ビットマップは、幅 50 mm の 320 dpi png です。私の考えは、低密度の画面で正確に必要な幅に簡単に縮小できる高解像度の画像を提供することでした.

上記の方法は、ベータ テスト済みのほぼすべてのデバイスで正常に機能しています。しかし、HTC Evo 4G では、定規が大きすぎます。Android 2.3.5 を実行する後者のデバイスは、これまでに報告された唯一の失敗です。

4

1 に答える 1

0

デバイスのAndroid2.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();
于 2012-10-26T15:17:26.180 に答える