ShapeBlurView
ShapeBlurView copied to clipboard
Software rendering doesn't support hardware bitmaps
我也遇到这个问题了,可有解法 java.lang.IllegalArgumentException: Software rendering doesn't support hardware bitmaps at android.graphics.BaseCanvas.onHwBitmapInSwMode(BaseCanvas.java:699) at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:706) at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:81) at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:139) at android.graphics.Canvas.drawBitmap(Canvas.java:1605) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:549) at android.view.View.drawBackground(View.java:22935) at android.view.View.draw(View.java:22696) at android.view.View.draw(View.java:22577) at android.view.ViewGroup.drawChild(ViewGroup.java:4528) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289) at android.view.ViewOverlay$OverlayViewGroup.dispatchDraw(ViewOverlay.java:255) at android.view.View.draw(View.java:22713) at com.android.internal.policy.DecorView.draw(DecorView.java:821) at net.center.blurview.ShapeBlurView$a.onPreDraw(Unknown Source:192) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1093) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3362) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2179) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8793) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037) at android.view.Choreographer.doCallbacks(Choreographer.java:845) at android.view.Choreographer.doFrame(Choreographer.java:780) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7870) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
同问,也遇到这个问题了
FATAL EXCEPTION: main Process: com.yoocar.kanjian, PID: 13639 java.lang.IllegalArgumentException: Software rendering doesn't support hardware bitmaps at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:706) at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:81) at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:139) at android.graphics.Canvas.drawBitmap(Canvas.java:1604) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:549) at android.widget.ImageView.onDraw(ImageView.java:1446) at android.view.View.draw(View.java:23195) at android.view.View.draw(View.java:23068) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:235) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:225) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at androidx.fragment.app.FragmentContainerView.drawChild(FragmentContainerView.kt:235) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at androidx.fragment.app.FragmentContainerView.dispatchDraw(FragmentContainerView.kt:225) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994) at android.view.View.draw(View.java:23198) at android.view.View.draw(View.java:23068) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23066) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23198) at com.android.internal.policy.DecorView.draw(DecorView.java:819) at net.center.blurview.ShapeBlurView$1.onPreDraw(ShapeBlurView.java:506) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1093) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3491) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2286) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8948) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239) at android.view.Choreographer.doCallbacks(Choreographer.java:899) at android.view.Choreographer.doFrame(Choreographer.java:832) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288)
找到解决的方法了,是Glide或者Coil库加载图片时使用了硬件加速,与该库的绘制有冲突,加载图片时把硬件加速关了就行了。给一个扩展方法
fun ImageView.disableHardwareLoad(url:String){
val request = ImageRequest.Builder(this.context)
.data(url)
.allowHardware(false) // 禁用硬件加速,不然和高斯模糊的库一起用会报错
.target(this)
.build()
Coil.imageLoader(this.context).enqueue(request)
}
问题分析 https://juejin.cn/post/6844903764525056008 参考链接 Software rendering doesn't support hardware bitmaps #159
找到解决的方法了,是Glide或者Coil库加载图片时使用了硬件加速,与该库的绘制有冲突,加载图片时把硬件加速关了就行了。给一个扩展方法
fun ImageView.disableHardwareLoad(url:String){ val request = ImageRequest.Builder(this.context) .data(url) .allowHardware(false) // 禁用硬件加速,不然和高斯模糊的库一起用会报错 .target(this) .build() Coil.imageLoader(this.context).enqueue(request) }
问题分析 https://juejin.cn/post/6844903764525056008 参考链接 Software rendering doesn't support hardware bitmaps #159
感谢大佬,已解决