Ramotion/folding-cell-android

Animation flickers on Android 10

NewAndOldAdrian opened this issue · 19 comments

Hi,

I have downloaded the the remotion app from play store and I run it on several devices with Android 10 and I get the flicker like in the following video.
https://files.fm/u/dse7fwse

Also with my own implementation of this library the flicker reproduces on Android 10 devices.
Please keep in mind that is not a device issue because I tried the app on several devices with Android 10 and it always reproduced.

Any idea on how to fix this?
Thanks

Hello, @NewAndOldAdrian. Tested sample app from this repo on Android 10 API 29 device and there is no such bug. https://files.fm/f/bq75uq7z. What are the devices that you've used for testing?

Hi,

I tried with two devices having Google Pixel and one Samsung Note 9. I will try the sample from this repo in a few minutes and I will reply to this thread

I tried the latest version of the sample, with folding-cell-listview-example, the flicker animation still happens on Android 10 when you try to expand the second item in the list
https://files.fm/u/t3b2dmuv

@NewAndOldAdrian Couldn't reproduce the bug on any of devices with various OS versions. As you can see on the video it works fine. If you can easily reproduce the bug you may try to resolve it as this is an open source project. If you want to of course.

@golovin47 Animations are not really my thing. The glitch is very easily reproducible, appears either at the beginning of the animation, or at the end...

Any idea what could be since it appears only on ANDROID 10 ?

Thanks anyway

@golovin47 I don't want to bother you, but I've taken a closer look to your video and I've seen that you expand the first item in the list and then the second.
The issue reproduces on ANDROID 10 if you leave the first item unexpanded and you expand the second one.

@golovin47 what device do you use?

@golovin47 I made some debug/experimenting and there seems to be an issue with the backView taking the full width....but I can't tell exactly what

@golovin47 Hello, I also encountered a similar problem, and I found that the initial height of the foldingLayout is. The height of its LayoutParams is wrap_content, and then at startFoldAnimation, all cells are setVisibility (VISIBLE), and the initial height of foldingLayout is the full height of contentView, causing a frame to flicker. I tried to fix the problem and it seems to be fixed.

Hello, @wwwdotfa. Thanks for your involvement, but unfortunately this issue is still reproducible even with your proposed fix.

Solution:
In FoldingCellView remove the following lines:
this.setClipToPadding(false);
this.setClipChildren(false);

and its going to work.
Cheers:)

Hello, @wwwdotfa. Thanks for your involvement, but unfortunately this issue is still reproducible even with your proposed fix.

Then I may have another problem. I recorded the video and intercepted a flashing frame. This is the problem I tried to solve.

微信图片_20200227132113

Hello, @wwwdotfa. Thanks for your involvement, but unfortunately this issue is still reproducible even with your proposed fix.

Then I may have another problem. I recorded the video and intercepted a flashing frame. This is the problem I tried to solve.

微信图片_20200227132113

The blue area is after folding, and the green area is before folding. You can see that one blue frame has the same height as green‘s full height.

I am having the same problem @NewAndOldAdrian 's solution is not working in this case. and i am using OnePlus 6T android 10.
UPDATE: i had not applied camera height and animation duration to cell and it worked fine.
But in some cases it still causing problems.
Screenshot_20200504-154333
Screenshot_20200504-154339

same issue here android 10, samsung galaxy s10

Hi, I'm having the same issue where the backside color flickers and blocks the rest of the screen during animation on android 10 on a Samsung galaxy A50. very frustrating.

Samsung 9s android 10 ,There are also such problems

In FoldingCellView remove the following lines:
this.setClipToPadding(false);
this.setClipChildren(false);

Just get rid of it