Android RecyclerView增加高度动画不工作

Android RecyclerView增加高度动画不工作,android,android-recyclerview,android-animation,Android,Android Recyclerview,Android Animation,我试图在点击按钮时增加RecyclerView高度,然后在通过动画点击按钮时降低高度 它正在适当地增加和减少,但动画不起作用 这是我的密码 public void expand(View view) { Button button = (Button) view; if(button.getText().toString().equalsIgnoreCase("INCREASE")) { button.setText("DECREASE");

我试图在点击按钮时增加RecyclerView高度,然后在通过动画点击按钮时降低高度

它正在适当地增加和减少,但动画不起作用

这是我的密码

public void expand(View view) {

    Button button = (Button) view;
    if(button.getText().toString().equalsIgnoreCase("INCREASE")) {

        button.setText("DECREASE");
        final int height = (int) (recyclerView.getHeight() * 2.5);
        Animation a = new Animation() {

            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {

                FrameLayout.LayoutParams lp =
                        new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, height);
                lp.gravity = Gravity.BOTTOM;
                recyclerView.setLayoutParams(lp);
            }
        };
        a.setDuration(2000); // in ms
        recyclerView.startAnimation(a);
    }
    else
    {

        button.setText("INCREASE");
        final int height = (int) (recyclerView.getHeight() / 2.5);
        Animation a = new Animation() {

            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {

                FrameLayout.LayoutParams lp =
                        new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, height);
                lp.gravity = Gravity.BOTTOM;
                recyclerView.setLayoutParams(lp);
            }
        };
        a.setDuration(2000); // in ms
        recyclerView.startAnimation(a);
    }

}

我该怎么做?我不想把它拉长。我想用一些动画效果来增加它的高度。

尝试使用value animator

ValueAnimator anim = ValueAnimator.ofInt(viewToIncreaseHeight.getMeasuredHeight(), -100);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        int val = (Integer) valueAnimator.getAnimatedValue();
        ViewGroup.LayoutParams layoutParams = viewToIncreaseHeight.getLayoutParams();
        layoutParams.height = val;
        viewToIncreaseHeight.setLayoutParams(layoutParams);
    }
});
anim.setDuration(DURATION);
anim.start(); 

我遇到了一个类似的问题,我通过在xml布局描述中的容器布局上添加属性android:animateLayoutChanges=true解决了这个问题。 例如:

<LinearLayout 
 android:id="@+id/container"
 android:animateLayoutChanges="true">
      <RecyclerView 
       android:id="@+id/recyclerView"
           ...
      />
</LinearLayout>

希望有帮助

好的,在你的评论之后。我尝试了valueanimator,它成功了。但它总是从底部开始动画。意味着当增加高度时,它将从动画底部开始到recycleview的高度。降低高度时,回收视图消失,并再次从底部开始到新高度。谢谢,它确实起作用了。我使用的是ValueAnimator va=ValueAnimator.ofInt0,newheight;代替ValueAnimator va=ValueAnimator.OfIntercycleView.getHeight,使用newheight;有些设备根本不支持此功能/具有不同的动画持续时间或根本不进行动画制作。