小编Dun*_*gFu的帖子

当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 != …
Run Code Online (Sandbox Code Playgroud)

animation android android-animation android-recyclerview

8
推荐指数
1
解决办法
2232
查看次数