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

我所有这些都是由Android渲染脚本完成的,因为我有很多片段,每个片段都有颜色背景,所以我认为渲染是最好的选择,否则它可能会在浏览页刷时被卡住。
@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的背景中设置了颜色,那么就会出现
由: java.lang.IllegalArgumentException:宽度和高度必须>0,我们可以模糊一个视图的背景有颜色而不是图像
这是我的看法..。

发布于 2017-01-02 10:53:16
这可以通过以下步骤实现
LinearLayout的背景图像。LinearLayout类1. DrawBitmap 2. DrawColor中创建两个方法。我希望这能解决你的问题。
示例代码用于此
发布于 2017-04-25 13:46:27
在调用getBitmapFromView方法时,您的视图可能还没有准备好。您可以尝试将您的方法包装如下:
view.post(new Runnable() {
public void run(){
Bitmap blurred = blur(YourActivity.this, getBitmapFromView(view));
view.setBackgroundDrawable(new BitmapDrawable(getResources(), blurred));
}
});您可以使用您的blur()方法
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;
}希望能帮上忙!
https://stackoverflow.com/questions/41417300
复制相似问题