2

assets フォルダーから画像を読み込みますが、1 つの問題があります。

アセットとリソースから読み込まれた同じ画像は、同じサイズ (解像度) ではありません。

アセットから画像を取得するには、次のメソッドを使用します。

AssetManager am=this.getAssets();
            try {
                Bitmap bmp = BitmapFactory.decodeStream(am.open("imgs/a.jpg"));
                imageViewDraw.setImageBitmap(bmp);
            } catch (IOException e) {

                e.printStackTrace();
            }

R.drawable から読み込まれた同じ画像の出力とアセットが画像上にある

アセットから画像を読み取る理由と方法を教えてもらえますが、解像度は R.drawable と同じにする必要がありますか?

出力画像

ありがとう

4

2 に答える 2

0

ビットマップを Imageview にロードする場合は、scaleType およびadjustViewbounds パラメータを使用します。たとえば、XML では次のようになります。

                        <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:adjustViewBounds="true"
                        android:scaleType="centerInside" />

アセット ディレクトリから画像をロードすると、システムはビットマップにスケーリングや処理をまったく適用せず、代わりにドローアブル フォルダーを使用すると、Android はデバイスの解像度に従って画像をスケーリングしようとします。

したがって、まったく同じ結果を得る唯一の実際の方法は、imageview に固定サイズを使用することです。理想的には dps で指定する必要があり、理想的にはその値を dimens.xml ファイルに配置して、さまざまなシステムの値を変更できるようにする必要があります。構成

于 2012-08-06T21:41:58.613 に答える
0

代わりに、スケーリングされたドローアブルで setDrawable を使用する必要があります。

imageView.setImageDrawable(新しい BitmapDrawable(getContext().getResources(),bitmap));

これは、getResources() パラメーターを取得しない他のメソッドが非推奨になっている理由でもあります。この場合、スケーリングが処理されます。

于 2012-08-06T21:58:30.167 に答える