Codename One - 如何检查BubbleTransition支持

时间:2017-01-18 17:03:42

标签: java crash codenameone

某些旧设备( 4.0.4及更低版本)上的

BubbleTransition 会立即使用UnsupportedOperationException崩溃应用程序(通过 Android Studio查看跟踪)。

堆栈跟踪引导我使用一些图像裁剪方法。

如何检查当前平台是否支持裁剪以避免崩溃?

堆栈跟踪

E/AndroidRuntime: FATAL EXCEPTION: main
              java.lang.UnsupportedOperationException
                  at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:417)
                  at com.codename1.impl.android.AndroidGraphics.setClipRaw(AndroidGraphics.java:1368)
                  at com.codename1.impl.android.AndroidAsyncView$AsyncOp.executeWithClip(AndroidAsyncView.java:144)
                  at com.codename1.impl.android.AndroidAsyncView.dispatchDraw(AndroidAsyncView.java:229)
                  at android.view.View.getDisplayList(View.java:10519)
                  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2701)
                  at android.view.View.getDisplayList(View.java:10484)
                  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2701)
                  at android.view.View.getDisplayList(View.java:10484)
                  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2701)
                  at android.view.View.getDisplayList(View.java:10484)
                  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2701)
                  at android.view.View.getDisplayList(View.java:10484)
                  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2701)
                  at android.view.View.getDisplayList(View.java:10484)
                  at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:851)
                  at android.view.ViewRootImpl.draw(ViewRootImpl.java:1910)
                  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
                  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
                  at android.os.Handler.dispatchMessage(Handler.java:99)
                  at android.os.Looper.loop(Looper.java:137)
                  at android.app.ActivityThread.main(ActivityThread.java:4441)
                  at java.lang.reflect.Method.invokeNative(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:511)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
                  at dalvik.system.NativeStart.main(Native Method)

可能的CN1实施修复

可能可以通过检查Android API级别以及API 18以下来禁用硬件加速

来修复
setLayerType(View.LAYER_TYPE_SOFTWARE, null)

问题与 ICS 设备上的强制硬件加速有关。 但它与CN1的实现有关,所以我无能为力。

1 个答案:

答案 0 :(得分:0)

感谢我们为2017年2月3日星期五的下一次更新修复它。该修复程序将禁用旧设备的形状剪裁,这将迫使气泡转换为兼容模式。

这种方法的原因是我们不希望整个设备因为一个缺失的功能而变慢,我宁愿避免形状削减而不是性能受损。