您好我是android新手。任何人都可以帮我保持图像的宽高比。在我的应用程序中,我从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);
请帮我找到这个。
答案 0 :(得分:2)
你必须使用ImageView的Scaling属性为UIImageView在你的xml文件中使用这个属性使用一个scaleview的缩放类型
android:adjustViewBounds="true"
android:scaleType="fitXY" or android:scaleType="centerCrop"
答案 1 :(得分:0)
将ImageView的ScaleType属性设置为xml或activity中的“CenterInside”。
my_image.setScaleType(ScaleType.CENTER_INSIDE);
的更多信息
答案 2 :(得分:0)
有时显示位图可能非常棘手。
应该非常密切地遵循本教程:http://developer.android.com/training/displaying-bitmaps/index.html