AnderWeb / discreteSeekBar

Apache License 2.0
2.11k stars 401 forks source link

Slider crashes on Android Q (Preview edition) #127

Open ayqooi opened 5 years ago

ayqooi commented 5 years ago

Crashes the moment you attempt to scroll when using on Android Q (Preview)... This works perfectly on all recent Android versions prior to Q.

Stacktrace attached:

java.lang.IllegalArgumentException: path must be convex at android.graphics.Outline.setConvexPath(Outline.java:286) at org.adw.library.widgets.discreteseekbar.internal.compat.SeekBarCompatDontCrash$1.getOutline(SeekBarCompatDontCrash.java:44) at android.view.View.rebuildOutline(View.java:16874) at android.view.View.invalidateDrawable(View.java:22071) at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:456) at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable.updateAnimation(MarkerDrawable.java:148) at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable.access$400(MarkerDrawable.java:46) at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable$1.run(MarkerDrawable.java:191) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:981) at android.view.Choreographer.doCallbacks(Choreographer.java:791) at android.view.Choreographer.doFrame(Choreographer.java:722) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:966) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:209) at android.app.ActivityThread.main(ActivityThread.java:7021) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:486) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:872)

quiquelhappy commented 5 years ago

experimenting the same.

thaocrouch commented 5 years ago

Error when touch the thumb and drag left or right. (Android Q beta 2) java.lang.IllegalArgumentException: path must be convex at android.graphics.Outline.setConvexPath(Outline.java:286) at org.adw.library.widgets.discreteseekbar.internal.compat.SeekBarCompatDontCrash$1.getOutline(SeekBarCompatDontCrash.java:44) at android.view.View.rebuildOutline(View.java:17298) at android.view.View.invalidateDrawable(View.java:22503) at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:456) at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable.updateAnimation(MarkerDrawable.java:148) at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable.access$400(MarkerDrawable.java:46) at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable$1.run(MarkerDrawable.java:191) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966) at android.view.Choreographer.doCallbacks(Choreographer.java:790) at android.view.Choreographer.doFrame(Choreographer.java:721) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951) at android.os.Handler.handleCallback(Handler.java:878) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:209) at android.app.ActivityThread.main(ActivityThread.java:7046) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:486) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)

friskyliu commented 5 years ago

same crash, pls fix

ayqooi commented 5 years ago

The fix appears to be just to comment out the line:

outline.setConvexPath(markerDrawable.getPath());

inside SeekBarCompatDontCrash

I've tested this on 3 different versions of Android (M, P, and Q). And everything seems to work as normal. The "bubble" still renders correctly and most importantly of all there is NO crash on Android Q.

drakeet commented 5 years ago

The same crash on Android Q (QPP3.190404.015)

Fatal Exception: java.lang.IllegalArgumentException: path must be convex
       at android.graphics.Outline.setConvexPath(Outline.java:286)
       at org.adw.library.widgets.discreteseekbar.internal.compat.SeekBarCompatDontCrash$1.getOutline(SeekBarCompatDontCrash.java:44)
       at android.view.View.rebuildOutline(View.java:17481)
       at android.view.View.invalidateDrawable(View.java:22671)
       at android.graphics.drawable.Drawable.invalidateSelf(Drawable.java:477)
       at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable.updateAnimation(MarkerDrawable.java:148)
       at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable.access$400(MarkerDrawable.java:46)
       at org.adw.library.widgets.discreteseekbar.internal.drawable.MarkerDrawable$1.run(MarkerDrawable.java:191)
ayqooi commented 5 years ago

@drakeet I already posted a comment that says you can fix it yourself and the fix is easy ... as it looks like the developer of this repo doesn't maintain it anymore