android动画调整高度,android – 当RecyclerView元素为其高度设置动画时,如何正确绘制ItemDecoration?...

我有一个使用LinearLayoutManager(垂直)的RecyclerView.我想要完成的是让项目装饰(全宽和1px高)分隔器动画与视图移动视图(translationY()正确处理)和视图更改其高度时.在我下面的当前代码中,分隔符将跳转到视图底部的未来位置,而不是动画期间的当前底部.有什么方法可以解释动画期间项目装饰的高度变化,使动画看起来更好吗?

我正在通过在RecyclerView的适配器上使用notifyItemChanged()来更改视图高度.

public class DividerItemDecoration extends RecyclerView.ItemDecoration {

private Drawable mDivider;

public DividerItemDecoration(Context context) {

mDivider = context.getResources().getDrawable(R.drawable.line_divider);

}

@Override

public void onDrawOver(Canvas c,RecyclerView parent,RecyclerView.State state) {

int right = parent.getWidth();

int dividerHeight = mDivider.getIntrinsicHeight();

int childCount = parent.getChildCount();

for (int i = 0; i < childCount - 1; i++) {

View child = parent.getChildAt(i);

View nextChild = parent.getChildAt(i + 1);

RecyclerView.LayoutParams layoutParams1 =

(RecyclerView.LayoutParams) child.getLayoutParams();

RecyclerView.LayoutParams layoutParams2 =

(RecyclerView.LayoutParams) nextChild.getLayoutParams();

int left = 0;

if (layoutParams1 != null && layoutParams2 != null) {

left = Math.min(layoutParams1.leftMargin,layoutParams2.leftMargin);

}

int ty = (int) (child.getTranslationY() + 0.5f);

int top = child.getBottom() + ty;

int bottom = top + dividerHeight;

mDivider.setBounds(

left,top,right,bottom);

mDivider.draw(c);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值