Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 向下滑动视图在第一次后不再显示_Android_Android Animation_Android Transitions - Fatal编程技术网

Android 向下滑动视图在第一次后不再显示

Android 向下滑动视图在第一次后不再显示,android,android-animation,android-transitions,Android,Android Animation,Android Transitions,我正试图在一个按钮点击时向下滑动视图,在同一个按钮点击时向上滑动 一切都是第一次工作,一旦滑下和滑上都完成了,就不会工作了 if (slideView.getVisibility() != View.VISIBLE) { Transition transition = new Slide(Gravity.TOP); transition.setDuration(300); transiti

我正试图在一个按钮点击时向下滑动视图,在同一个按钮点击时向上滑动

一切都是第一次工作,一旦滑下和滑上都完成了,就不会工作了

     if (slideView.getVisibility() != View.VISIBLE) {

                Transition transition = new Slide(Gravity.TOP);
                transition.setDuration(300);
                transition.addTarget(slideView);
                TransitionManager.beginDelayedTransition(slideViewParent, transition);
                slideView.setVisibility(View.VISIBLE);
                transition.removeTarget(slideView);
            } else {
                slideView.animate()
                        .translationY(-slideView.getHeight())
                        .setDuration(400)
                        .setListener(new AnimatorListenerAdapter() {
                            @Override
                            public void onAnimationEnd(Animator animation) {
                                super.onAnimationEnd(animation);
                                animation.end();
                                slideView.setVisibility(View.GONE);
                            }
                        });
            }

它最初将从父视图向下滑动。。然后单击按钮,它将向上滑动。。单击“再次打开”按钮,什么也不会发生。。我想再往下滑一次

我没有足够的声誉发表评论。 但是,如果您的视图已经可见,甚至已经消失,那么您的错误在于这两行:

slideView.setVisibility(View.VISIBLE);
slideView.setVisibility(View.GONE);
视图已可见或已消失,您将其再次设置为可见/消失,并以向下/向上的无限循环结束

因此,将代码更改为:

if (slideView.getVisibility() != View.VISIBLE) {

                Transition transition = new Slide(Gravity.TOP);
                transition.setDuration(300);
                transition.addTarget(slideView);
                TransitionManager.beginDelayedTransition(slideViewParent, transition);
                slideView.setVisibility(View.GONE);
                transition.removeTarget(slideView);
            } else {
                slideView.animate()
                        .translationY(-slideView.getHeight())
                        .setDuration(400)
                        .setListener(new AnimatorListenerAdapter() {
                            @Override
                            public void onAnimationEnd(Animator animation) {
                                super.onAnimationEnd(animation);
                                animation.end();
                                slideView.setVisibility(View.VISIBLE);
                            }
                        });
            }

由于要根据视图的可见性设置视图的动画,即
(slideView.getVisibility()!=view.VISIBLE)
,因此在这段代码中设置视图的可见性不是一个好主意。您可能希望在不同的布尔值上设置动画(在我的例子中,如果播放音乐,则向上滑动,可见性可见,否则向下滑动,可见性消失)。如果有其他东西改变了视图的可见性,则以下代码将按原样工作。 在onClickListener中:

if (slideView.getVisibility() != View.VISIBLE) {
// if the view is not visible, slide it up
            slideView.animate()
                    .translationY( -slideView.getHeight() )
                    .setInterpolator( new LinearInterpolator() )
                    .setDuration( 500 )
                    .start();
                            
            } else {
// if the view is visible, slide it back where it was
// 0 indicates the original position the view was in
            slideView.animate()
                    .translationY( 0 )
                    .setInterpolator( new LinearInterpolator() )
                    .setDuration( 500 )
                    .start();
            }
请记住,这一切都取决于视图本身的可见性以及您如何做到这一点!
您可能需要告诉我们,在您的代码中,谁更改了视图的可见性,以便为您提供更好的
if
语句。

为什么不同时使用view.animate?@Prince Ali view animate不适用于slide down。您能解释一下“不工作”是什么意思吗?如果有效果,你会得到什么效果?@Prince Ali it会从父视图中以初始值向下滑动。。然后单击按钮,它将向上滑动。。单击“再次打开”按钮,什么也不会发生。。我想滑下去again@jin快乐的编码,请不要忽视,如果你有任何错误,请告诉我,如果你没有,并且它可以工作,那么请将它标记为一个答案,以便将来有相同问题的人可以使用它