在android中使用动画显示/隐藏视图

在android中使用动画显示/隐藏视图,android,Android,我想隐藏和显示后,用户触摸屏幕上的动画视图交替。但我不知道该怎么做。有人能帮我吗 我在这里获得了最高的视野 int finalHeight = listView.getHeight(); ValueAnimator mAnimator = slideAnimator(finalHeight, 0); 然后隐藏该布局 ValueAnimator animator = ValueAnimator.ofInt(start, end); animator.addUpdateListener

我想隐藏和显示后,用户触摸屏幕上的动画视图交替。但我不知道该怎么做。有人能帮我吗

我在这里获得了最高的视野

int finalHeight = listView.getHeight(); 
ValueAnimator mAnimator = slideAnimator(finalHeight, 0);
然后隐藏该布局

ValueAnimator animator = ValueAnimator.ofInt(start, end);

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            // Update Height
            int value = (Integer) valueAnimator.getAnimatedValue();

            ViewGroup.LayoutParams layoutParams = listView
                    .getLayoutParams();
            layoutParams.height = value;

            listView.setLayoutParams(layoutParams);
        }
    });
我想要像这样的动画


隐藏动画可以如下所示:

    ObjectAnimator hideAnim = ObjectAnimator.ofFloat(v, "translationY", 0, -v.getHeight());
    hideAnim.setDuration(300);

    hideAnim.addListener(new Animator.AnimatorListener() {
        @Override 
        public void onAnimationStart(Animator animation) {

        } 

        @Override 
        public void onAnimationEnd(Animator animator) {
            view.setVisibility(View.INVISIBLE);
        }

        @Override 
        public void onAnimationRepeat(Animator animation) {

        } 
    });
    ObjectAnimator unhideAnim = ObjectAnimator.ofFloat(v, "translationY", -v.getHeight, 0);
    unhideAnim.setDuration(300);
您的取消隐藏动画可以如下所示:

    ObjectAnimator hideAnim = ObjectAnimator.ofFloat(v, "translationY", 0, -v.getHeight());
    hideAnim.setDuration(300);

    hideAnim.addListener(new Animator.AnimatorListener() {
        @Override 
        public void onAnimationStart(Animator animation) {

        } 

        @Override 
        public void onAnimationEnd(Animator animator) {
            view.setVisibility(View.INVISIBLE);
        }

        @Override 
        public void onAnimationRepeat(Animator animation) {

        } 
    });
    ObjectAnimator unhideAnim = ObjectAnimator.ofFloat(v, "translationY", -v.getHeight, 0);
    unhideAnim.setDuration(300);
单击视图的侦听器:

v.setOnClickListener(new View.OnClickListener() {
    @Overrride
    public void onClick(View view) {
        if (v.getVisibility() == View.INVISIBLE) {
            v.setVisibility(View.VISIBLE)
            v.startAnimation(unhideAnim);
        } else {
            v.startAnimation(hideAnim);
        }
    }
});

仅当您的视图位于其视图组的顶部时才有效。

您到目前为止都在尝试什么?本教程可能会帮助您:您应该发布到目前为止所做的工作。我使用动画隐藏视图,但它不会在第二次触摸后显示您的代码。不适用于我。我想隐藏水平
RecyclerView
您需要分享发生的事情。我使用了您的代码,但
RecyclerView
没有隐藏。它还在屏幕上你一定在开玩笑!为什么现在才向我透露RecyclerView!你怎么能指望有人帮你脱离困境,而你却隐藏了所有重要的信息?参观这里:对不起,我的错误。但是有没有办法隐藏水平
RecyclerView