我在模糊图像上使用了androidx,但是当运行android api <19崩溃应用程序时。 当我以android> 19运行时,我运行正常,不是崩溃应用程序,如果我将android normal与“ android.support.v8.renderscript”一起使用,则没有崩溃应用程序。 在build.gradle。我添加了:
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
代码应用:
public static Bitmap blurBitmap(Bitmap bitmap,
float radius) { //Create renderscript
RenderScript
rs = RenderScript.create(MyApplication.getInstance());
//Create allocation from Bitmap
Allocation allocation = Allocation.createFromBitmap(rs,
bitmap);
Type t = allocation.getType();
//Create allocation with the same type
Allocation blurredAllocation = Allocation.createTyped(rs,
t);
//Create script
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8(rs));
//Set blur radius (maximum 25.0)
blurScript.setRadius(radius);
//Set input for script
blurScript.setInput(allocation);
//Call script for output allocation
blurScript.forEach(blurredAllocation);
//Copy script result into bitmap
blurredAllocation.copyTo(bitmap);
//Destroy everything to free memory
allocation.destroy();
blurredAllocation.destroy();
blurScript.destroy();
t.destroy();
rs.destroy();
return bitmap;
}
答案 0 :(得分:1)
这与您的实现无关。这是androidx库中的一个错误,实际上,即使是在API 21上,它也会发生在我身上,因此它的影响可能比您所经历的还要大。
有人已经提出了问题here。不幸的是,我已经关注这个问题很长时间了。目前,对于我的许多项目而言,这是让我迁移到AndroidX的最佳选择。
答案 1 :(得分:0)
Element.U8
的{{1}}参数不正确。
ScriptIntrinsicBlur.create()
期望ScriptIntrinsicBlur
的元素类型为Allocation
,但是受Element.U8
支持的Bitmap
的元素类型为Allocation
(又名Element.RGBA_8888
)。
尝试:
Element.U8_4
或一般而言:
ScriptIntrinsicBlur.create(rs, Element.RGBA_8888(rs))