为什么Android渐变启动画面仅在5.0上导致即时重启?
我使用从这里的解决方案,使我的申请一个渐变背景闪屏: how to get android gradient center light effect?为什么Android渐变启动画面仅在5.0上导致即时重启?
我使用张贴Vadym解决方案:
<item >
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="@android:color/transparent"
android:endColor="@android:color/black"
android:centerX="50%"
android:centerY="50%"
android:gradientRadius="100%"
android:type="radial"/>
</shape>
</item>
不幸的是,这是造成整个电话重启只能在Android 5.0上开机!不是5.1或4.4或6.0或7.0 发生了什么?我甚至不能评论Vadyms解决方案,因为我的声誉还不够。有人可以在评论中添加警告吗?
logcat的说:
08-10 09:50:57.395 22267-22292/system_process E/AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: android.display
java.lang.IllegalArgumentException: radius must be > 0
at android.graphics.RadialGradient.<init>(RadialGradient.java:57)
at android.graphics.drawable.GradientDrawable.ensureValidRect(GradientDrawable.java:938)
at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:509)
at android.graphics.drawable.LayerDrawable.draw(LayerDrawable.java:537)
at android.view.View.drawBackground(View.java:15352)
at android.view.View.draw(View.java:15105)
at android.widget.FrameLayout.draw(FrameLayout.java:592)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2606)
at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2613)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2526)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2337)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1968)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5786)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
对API 不接受%值。要解决此问题,您可以使用%p
(https://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html#attr_android:gradientRadius)
android:gradientRadius="100%p"
试试这个;
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();
我应该在哪里放置该代码?何时应该执行?该应用程序正在使用渐变背景xml立即关闭手机。 – computerjulian
在您的启动画面活动...之后setContentView() –
谢谢!太糟糕的android工作室并没有警告这一点。 – computerjulian