我已经将图片中的图像解码为位图,并且我使用模糊类来模糊位图。 (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吗?怎么样?
答案 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>
我没想到答案会这么简单!