如何使模糊透明的线性布局

时间:2013-12-29 16:10:05

标签: android transparent blur

我在android中有一个透明的布局,在布局后面有一个图像。如何使线性模糊?我发现了使图像本身模糊的例子,但我不想让整个图像变成蓝色,只是将图像放在线性布局的后面。

2 个答案:

答案 0 :(得分:1)

将半透明模糊图像设置为线性布局或最简单地将颜色设置为线性布局,并通过定义alpha将其设置为半透明

已编辑的解决方案

这样做......

1。)创建背景图像的模糊副本。 2.)使用

剪辑图像
Bitmap croppedBmp = Bitmap.createBitmap(originalBmp, startX, startY, widthLayout , heightOfLayout);

3.。)使用高度和宽度属性为fill-parent的图像视图在线性布局中设置此图像。

答案 1 :(得分:0)

我有非常复杂的解决方案,因此不会有任何代码。所以,这是一步一步的想法:

  1. 假设您的布局只有一个自定义LinearLayout。没有ImageView作为背景。
  2. 我们要做的是绘制我们自己的LinearLayout背景,因此它会首先绘制完整的图像,然后从顶部的同一图像中绘制模糊的正方形。可以使用填充将LinearLayout的内容移动到所需位置。
  3. 因此,创建类似MyLinearLayout的内容并将其放到您的布局资源中。提供所需的构造函数。
  4. 覆盖onAttachedToWindow()onDetachedFromWindow()方法。在它们内部,我们应该加载我们的背景Bitmap并相应地回收它。我们将其命名为mBackground
  5. 覆盖draw()方法。在其中我们将首先绘制我们的mBackground
  6. 然后,您可以使用Canvas#clipRect()方法将Canvas的绘图区域裁剪为某个指定的矩形。在您的情况下,此矩形应该是您的内容下方的区域。您可以使用View#getPadding*()方法找出它。不要忘记在裁剪绘图区域之前调用canvas#save()
  7. 现在你可以再次使用模糊绘制你的位图(我不知道你正在使用哪种方法,所以让我们假设你知道怎么做......但是你仍然可以和我们分享:) )。很酷的是你可以再次全面绘制相同的Bitmap - 因为之前我们曾调用过clipRect,它只会在这个区域内绘制。在绘制背景后不要忘记致电canvas#restore()
  8. 致电super.draw()以获取您的LinearLayout包含的其他内容。