Android RecyclerView增加高度动画不工作
我试图在点击按钮时增加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");
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;有些设备根本不支持此功能/具有不同的动画持续时间或根本不进行动画制作。