3

if-path がこのコードを使用する if-else シナリオがあります。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPurgeable = true;
options.inInputShareable = true;
bitmap = BitmapFactory.decodeResource(getResources(), resourceId, options);

そして、else-path は次のコードを使用します。

InputStream is = getContentResolver().openInputStream(Uri.fromFile(file));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPurgeable = true;
options.inInputShareable = true;
bitmap = BitmapFactory.decodeStream(is, null, options);

今、API、テスト、グーグルからの短い説明を読んで、違いを完全に理解することはできませんが、微妙なものがあるようです.

コードの最初の部分は、ImageView (RelativeLayout 内、ScrollView 内) に適用されると、画面の幅に合わせてスケーリングされます。2番目のコードはそうではありません。これが私の問題です。適用すると、アスペクト比も何らかの形で緩んでいるようです。

imageView.setAdjustViewBounds(true);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);

なんとか幅に収まりますが、高さが台無しになります(本来よりも短くなります)。どんな入力でも大歓迎です!

(私はすでに最初のコードを変更して、何か他のものを台無しにしているかどうかを確認しようとしましたが、if-path を書き直しても同じエラーが発生しました:)

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPurgeable = true;
options.inInputShareable = true;
bitmap= BitmapFactory.decodeStream(getResources().openRawResource(resourceId), null, options);
4

0 に答える 0