代号一 - 如何检查 BubbleTransition 支持

Codename One - How to check BubbleTransition support

BubbleTransition 在某些旧设备(4.0.4 和更低版本)上立即使应用程序崩溃 UnsupportedOperationException(通过查看跟踪Android 工作室)。

堆栈跟踪引导我找到了一些图像裁剪方法。

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

堆栈跟踪

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的实现有关,没办法。

谢谢,我们将在 2017 年 2 月 3 日星期五发布的下一次更新中修复它。此修复将禁用旧设备的形状剪裁,这将强制气泡过渡到兼容模式。

采用这种方法的原因是我们不希望整个设备因为缺少一个功能而变慢,我宁愿避免形状剪裁也不愿性能受到影响。