隐藏视图直到动画完成android

时间:2015-08-19 19:17:50

标签: android animation

嘿我在右侧导航菜单中有一组textView我想要当菜单从右到左打开动画textview时为了我有两个动画,第一个是动画设置包含翻译动画和alpha动画 首先在第一个动画之后我遇到问题,textview在动画开始之前出现在它的位置,我通过将FillBefore=false添加到动画集​​中的动画并将textview可见性设置为动画开始前不可见 这很好。

然后我想在第一个动画集完成后添加另一个动画,当我添加这个动画时,问题又回来了,我无法解决,我删除它再次运行的第二个动画

这是我的动画集

 <set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fillEnabled="false"
        android:fillBefore="false"
        android:fillAfter="true"
        android:fromXDelta="150%"
        android:toXDelta="0" />
    <alpha
        android:duration="500"
        android:fillEnabled="true"
        android:fillBefore="false"
        android:fillAfter="true"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>

并且动画集的动画侦听器是

       main_set = (AnimationSet) AnimationUtils.loadAnimation(getActivity(), R.anim.main_menu);
    main_set.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
           // main_dashboard_txt.setVisibility(View.VISIBLE);
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            main_dashboard_txt.setVisibility(View.INVISIBLE);
            main_dashboard_txt.startAnimation(allanim);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });

并且所有动画动画都是

   final TranslateAnimation allanim = new TranslateAnimation(0, pxFromDp(getActivity(), 21), 0, 0);
    allanim.setDuration(100);
    allanim.setFillAfter(true);
    allanim.setFillBefore(false);
    allanim.setFillEnabled(true);
    allanim.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {
           // main_dashboard_txt.setVisibility(View.INVISIBLE);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });

我已经改变了之前填充的值并且多次填充但是它们似乎对第二个动画不起作用

另外:我第一次打开活动时效果很好但是当我关闭抽屉然后重新打开它时问题就出现了 感谢

2 个答案:

答案 0 :(得分:1)

将视图隐藏在另一个Thread或Runnable中,以便在动画持续时间内不可见

答案 1 :(得分:0)

我通过设置Fillafter = falseFillBefore=true以及onAnimationEnd修复了我的问题,我将视图设置为可见再次 问题是如果Fill after equal,则即使我将其可见性设置为不可见

,视图也会保留在屏幕上