I have a very odd issue that I cannot figure out. I was not an issue until recently but I can't seem to revert back to prevent it. Also the other odd thing is it works on some devices and others it does not.
The issue is animations. One in particular is snack bar. The snackbar should animate up and down but it is not. it just shows then hides. check video below to see issue.
Video of issue
Here is the Android code to animate the snackbar in
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { ViewCompat.setTranslationY(mView, mView.getHeight()); ViewCompat.animate(mView) .translationY(0f) .setInterpolator(FAST_OUT_SLOW_IN_INTERPOLATOR) .setDuration(ANIMATION_DURATION) .setListener(new ViewPropertyAnimatorListenerAdapter() { @Override public void onAnimationStart(View view) { mView.animateChildrenIn(ANIMATION_DURATION - ANIMATION_FADE_DURATION, ANIMATION_FADE_DURATION); } @Override public void onAnimationEnd(View view) { onViewShown(); } }).start(); }
Its using ViewCompat for the v4 Library. I have other animations working in another activity working fine. Also the issue is not on just one activity its all of them. That makes me think its system wide somehow. But they all use different internal themes but all extend Theme.AppCompat.NoActionBar.
Here is my main layout
<android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:elevation="4dp"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleTextAppearance="@style/ToolbarTitle" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:layout_scrollFlags="scroll|enterAlways|snap"/> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabTextAppearance="@style/TabText" app:tabMinWidth="@dimen/tab_minwidth" app:tabMode="fixed" app:tabGravity="fill" app:layout_scrollFlags="enterAlways"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> <fr.castorflex.android.circularprogressbar.CircularProgressBar android:id="@+id/base_progressSpinner" android:layout_gravity="center" android:layout_width="48dp" android:layout_height="48dp" android:indeterminate="true" android:visibility="invisible" app:cpb_color="@color/spinner" app:cpb_rotation_speed="1.0" app:cpb_sweep_speed="1.0" app:cpb_stroke_width="4dp" app:cpb_min_sweep_angle="10" app:cpb_max_sweep_angle="300"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab_upload" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" app:layout_anchor="@id/content_frame" app:layout_anchorGravity="bottom|right|end" app:borderWidth="0dp" android:src="@drawable/app_fab_upload" android:layout_margin="@dimen/big_padding" android:clickable="true" app:backgroundTint="@color/fab_social"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab_muzei" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" app:layout_anchor="@id/content_frame" app:layout_anchorGravity="bottom|right|end" app:borderWidth="0dp" android:src="@drawable/app_fab_muzei" android:layout_margin="@dimen/big_padding" android:clickable="true" app:backgroundTint="@color/fab_social"/> </android.support.design.widget.CoordinatorLayout>
Devices it works on
Devices it does not work
The other animation issues are with Switches. I have 2 in same layout and one stutters when switched and the other just switches with no animation.
I also have a LayoutTransition set to my AppBarLayout to animation the hiding/showing of my TabLayout and it works fine and all devices
You should use SnackBar#setCallback() and then start your show animation inside the onShow() method. Set your dismiss animation inside the onDismiss() method. Actually, setAnimation() also work.
Snackbar in android is a new widget introduced with the Material Design library as a replacement of a Toast. Android Snackbar is light-weight widget and they are used to show messages in the bottom of the application with swiping enabled. Snackbar android widget may contain an optional action button.
Android Snackbar is a material design component introduced with API 22.2. 0. The functionality would resemble Android Toast, but unlike Toast, Snackbar could be dismissed by user or an action listener could be setup to respond to user actions.
I found the reason why this is happening, but not how to fix yet.
/** * Returns true if we should animate the Snackbar view in/out. */ private boolean shouldAnimate() { return !mAccessibilityManager.isEnabled(); }
That is called by Snackbar class and is false on working devices, and true on devices not working. Does anyone know about this?
So after i disabled lastpass in my system settings, accessibility the snackbar now animates as it should. That is crazy how that works. Nova launcher has the same affect. I guess any service in accessibility that is enabled will cause the snackbar animation to not work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With