如何缩放bitmapdrawable(背景)并保持纵横比直到大于设备的宽度和高度

时间:2014-08-08 18:59:34

标签: android bitmap background drawable

我已经将图片中的图像解码为位图,并且我使用模糊类来模糊位图。 (Error when trying to blur image using RenderScript support library on android phone

我想从模糊的位图创建背景,但是使用此代码进行拉伸(rl是我的RelativeLayout):

  Uri selectedImageUri = data.getData();
          Blur blur = new Blur();
          imagepath = getRealPathFromURI(selectedImageUri);

          BitmapFactory.Options options = new BitmapFactory.Options();
          options.inJustDecodeBounds = true;
          BitmapFactory.decodeFile(imagepath, options);
          int pow = 0;
          while (options.outHeight >> pow > options.outHeight / 2 || options.outWidth >> pow > options.outWidth / 2) {
              pow += 1;
          options.inSampleSize = 1 << pow; 
          options.inJustDecodeBounds = false;
          }
         Bitmap bmImg = BitmapFactory.decodeFile(imagepath, options);
         Bitmap BlurredIMG = Blur.doBlur(bmImg, 33, false);
         BitmapDrawable bmp = new BitmapDrawable(BlurredIMG);
         rl.setBackground(bmp);

如何保持位图的宽高比并对其进行缩放以便覆盖设备的宽度和高度? 我需要使用ImageView吗?怎么样?

2 个答案:

答案 0 :(得分:0)

设置RelativeLayout后台资源可能不是最佳选择。相反,您可能希望拥有一个填充父级并使用缩放的ImageView。在某些听起来像你的情况下,这对我有用。

看看这个:

Fit a ImageView (and its src) to the layout width and make its height proportional

这与您的问题相似,但也许可以试试这个:

scale the size of downloaded image to fit the imageview

重点是你需要一个填充背景的ImageView,然后将其他元素放在它上面。布局背景的标准选项不足以满足您的需求。

答案 1 :(得分:0)

我在其他问题(Android: Scale a Drawable or background image?)上找到了答案,我使用了centerCrop作为比例类型。

    <FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/BG"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="centerCrop" />

</FrameLayout>

我没想到答案会这么简单!