1

你好,我是安卓新手。任何人都可以帮助我保持图像的纵横比。在我的应用程序中,我从 SDCARD 中选择图像并通过将意图传递给下一个活动在 imageview 中显示它。但大多数时候,当图像大或小时,图像在我的图像视图中无法正确显示。

 BitmapFactory.Options options = new BitmapFactory.Options();  
                options.inTempStorage = new byte[16 * 1024];  
                options.inJustDecodeBounds = true;  
                bitmap = BitmapFactory.decodeStream(getContentResolver()  
                        .openInputStream(mImageCaptureUri));

                ByteArrayOutputStream bs = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 50, bs);

                Bitmap newbitmap = Bitmap.createScaledBitmap(bitmap, 120,
                        120, true);

                newbitmap.compress(Bitmap.CompressFormat.PNG, 50, bs);
                Intent photointent = new Intent(MethinkzActivity.this,
                        DisplayImage.class);
                photointent.putExtra("photo", bs.toByteArray());

                startActivity(photointent);

在其他活动中,我通过以下方式抓住了这一点。

    bitmap = BitmapFactory.decodeByteArray(getIntent()
                .getByteArrayExtra("photo"), 0, getIntent()
                .getByteArrayExtra("photo").length);


        final double viewWidthToBitmapWidthRatio = (double) my_image
                .getWidth() / (double) bitmap.getWidth();
        my_image.getLayoutParams().height = (int) (bitmap.getHeight() * viewWidthToBitmapWidthRatio);
        my_image.setImageBitmap(bitmap);

请帮我找到这个。

4

3 回答 3

2

您应该必须为 ImageView 使用 ImageView 的 Scalling 属性 在您的 xml 文件中使用此属性 为 imageview 使用一种缩放类型

 android:adjustViewBounds="true"
 android:scaleType="fitXY" or  android:scaleType="centerCrop"
于 2012-07-27T05:34:44.373 回答
0

在 xml 或活动中将 ImageView 的 ScaleType 属性设置为“CenterInside”。

my_image.setScaleType(ScaleType.CENTER_INSIDE);

查看更多关于ScaleType

于 2012-07-27T05:04:25.590 回答
0

有时显示位图可能非常棘手。

应该非常密切地关注本教程:http: //developer.android.com/training/displaying-bitmaps/index.html

于 2012-07-27T05:08:29.260 回答