gpt4 book ai didi

android - 如何模糊 View

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:42 32 4
gpt4 key购买 nike

我有一个具有不同颜色的 View 。我需要模糊那个 View 的背景。例如,有一个 LinearLayout,其中有一个显示一些应用程序的网格,这个线性布局(Gridview 容器)有颜色(红色/绿色/黑色......等没有图像)。现在我需要模糊 LinearLayout 的背景。这个形象是我必须实现的。 enter image description here

我正在通过 Android Render 脚本完成所有这些工作,因为我有很多 fragment 并且每个 fragment 都有彩色背景,所以我认为 Render 是最好的选择,否则它可能会在查看寻呼机滑动时卡住。

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout mainLayout=(RelativeLayout)findViewById(R.id.activity_main);
view=(View)findViewById(R.id.view);
Bitmap blurredBitmap = blur( this, getBitmapFromView(view) );

view.setBackgroundDrawable( new BitmapDrawable( getResources(), blurredBitmap ) );
mainLayout.setBackgroundResource(R.drawable.wallp);
}
public static Bitmap getBitmapFromView(View view) {
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.draw(canvas);
return bitmap;
}
private static final float BITMAP_SCALE = 0.4f;
private static final float BLUR_RADIUS = 7.5f;

public static Bitmap blur(Context context, Bitmap image) {
int width = Math.round(image.getWidth() * BITMAP_SCALE);
int height = Math.round(image.getHeight() * BITMAP_SCALE);
Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

RenderScript rs = RenderScript.create(context);
ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
theIntrinsic.setRadius(BLUR_RADIUS);
theIntrinsic.setInput(tmpIn);
theIntrinsic.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);

return outputBitmap;
}

现在的问题是,如果我在 LinearLayout 的背景中设置颜色,则会出现错误

Caused by: java.lang.IllegalArgumentException: width and height must be > 0 can we blur the background of a view have having color but not image

这是我的观点... enter image description here

最佳答案

这可以通过以下步骤实现

  1. 通过裁剪提取LinearLayout的背景图片背景图片。
  2. 现在扩展 LinearLayout 类。

  3. 重写 OnDraw(Canvas mCanvas) 方法。

  4. 在自定义 LinearLayout 类 1 中创建两个方法。DrawBitmap 2. DrawColor.

  5. 首先通过提供您从中获得的偏移量来调用 DrawBitmap 函数ViewPager 到背景图像,以便在使用滑动时图像移动屏幕。

  6. 最后根据您的透明度绘制颜色

我希望这能解决您的问题。

示例代码

View Background Blur

关于android - 如何模糊 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41417300/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com