saket / cascade

Nested popup menus with smooth height animations for Android
https://saket.github.io/cascade
Apache License 2.0
2.02k stars 67 forks source link

Transitions are broken on some devices 🥺️ #4

Closed hackertronix closed 3 years ago

hackertronix commented 3 years ago

Description

Transition ends with a flicker.

Details

Device - OnePlus 7 Pro Android Version - 10.0 Status - Not rooted

Demo

Piyush7890 commented 3 years ago

I have a OnePlus 7 pro, and the animation works perfectly on my device. I don't think its a device specific issue

jamestalbot3 commented 3 years ago

Currently having same issue on Pixel 4XL running Android 11 with October security patch. Happens on both dark and light themes.

saket commented 3 years ago

I'm kind of shooting in the dark here because I can't reproduce this on my device, but can someone please help me by trying out these 4 APKs? Let me know if the transition looks glitch free in any of them?

https://www.dropbox.com/sh/mkhwpzf8rsfnlmu/AABBb7jIzOQrNVqyqy1xF6G0a?dl=0

gsrathoreniks commented 3 years ago

I'm kind of shooting in the dark here because I can't reproduce this on my device, but can someone please help me by trying out these 4 APKs? Let me know if the transition looks glitch free in any of them?

https://www.dropbox.com/sh/mkhwpzf8rsfnlmu/AABBb7jIzOQrNVqyqy1xF6G0a?dl=0

Which device?

saket commented 3 years ago

@gsrathoreniks any device will do if you're seeing the same glitch as the GIF above

calvinnor commented 3 years ago

The child clipping APK works perfectly for me. Running on a OnePlus 5T with an Android 10 custom ROM. Seeing it's also reproducible on a Pixel, this is likely not a OP specific issue.

gsrathoreniks commented 3 years ago

Sample_with_child_clipping.apk Crashing on clicking the menu items.

LOGS java.lang.NoSuchMethodError: No virtual method getAnimationMatrix()Landroid/graphics/Matrix; in class Landroid/view/View; or its super classes (declaration of 'android.view.View' appears in /system/framework/framework.jar!classes2.dex) at me.saket.cascade.HeightAnimatableViewFlipper.drawChild(HeightAnimatableViewFlipper.kt:118) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4114) at android.view.View.draw(View.java:20237) at android.view.View.updateDisplayListIfDirty(View.java:19109) at android.view.View.draw(View.java:19962) at android.view.ViewGroup.drawChild(ViewGroup.java:4337) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4114) at android.view.View.updateDisplayListIfDirty(View.java:19100) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:801) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3406) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3190) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2559) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1529) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7409) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1036) at android.view.Choreographer.doCallbacks(Choreographer.java:832) at android.view.Choreographer.doFrame(Choreographer.java:767) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

SourabhSNath commented 3 years ago

Sample with child clipping works, but is the animation speed supposed to be super slow? Double clicking opens the same menu again too

Slow.gif

saket commented 3 years ago

@CalvinNor Just want to confirm: are you you able to reproduce the bug on all APKs except for sample_with_child_clipping.apk?

@gsrathoreniks whoops looks like I was trying to use a newly introduced API and lint didn't complain about it either. Are you never able to reproduce the bug? Even with the sample apk mentioned here?

@SourabhSNath yeah looks like I forgot to undo changing the duration to 3.5s.

calvinnor commented 3 years ago

Yep. Bugged on all other APKs, except the one with child clipping.

I'm a dev too, I didn't care to tell you about the slow animation cause I thought you intentionally did it to debug 😂

hackertronix commented 3 years ago

Not sure if the slow animations are intentional but only the APK with the child clipping has fixed the flicker. All others are still the same

gsrathoreniks commented 3 years ago

@gsrathoreniks whoops looks like I was trying to use a newly introduced API and lint didn't complain about it either. Are you never able to reproduce the bug? Even with the sample apk mentioned here?

Yes, I'm able to reproduce the bug with sample_with_child_clipping.apk Sample APK is working fine, no glitches or crashes.

saket commented 3 years ago

Thanks for the help everyone. It looks like ViewFlipper's animations are the culprit here. I'm gonna throw them out to fix this.

saket commented 3 years ago

PR is up: #16. Can some of you please test the APK and let me know if the issue is fixed on your device?

calvinnor commented 3 years ago

The APK works for me! OnePlus 5T running Android 10.

jamestalbot3 commented 3 years ago

Yeah this fixed it for me as well.

saket commented 3 years ago

Awesome, thanks for raising this everyone!