Android ItemTouchHelper onChildDraw使itemView返回到其原始位置。
创始人
2024-08-14 06:00:10
0

要使itemView返回到其原始位置,您可以在ItemTouchHelper的onChildDraw方法中使用ObjectAnimator来实现平滑的动画效果。以下是一个示例代码:

public class MyItemTouchHelperCallback extends ItemTouchHelper.Callback {
    // ...

    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
        // 处理item的移动
        // ...
        return true;
    }

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        // 处理item的滑动删除
        // ...
    }

    @Override
    public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
            // 计算itemView的原始位置
            float originalX = viewHolder.itemView.getLeft();
            float originalY = viewHolder.itemView.getTop();

            // 根据dX和dY计算itemView的新位置
            float newX = originalX + dX;
            float newY = originalY + dY;

            // 使用ObjectAnimator实现平滑的动画效果
            ObjectAnimator animatorX = ObjectAnimator.ofFloat(viewHolder.itemView, "translationX", newX);
            ObjectAnimator animatorY = ObjectAnimator.ofFloat(viewHolder.itemView, "translationY", newY);

            // 设置动画的插值器和持续时间
            animatorX.setInterpolator(new LinearInterpolator());
            animatorY.setInterpolator(new LinearInterpolator());
            animatorX.setDuration(0);
            animatorY.setDuration(0);

            // 启动动画
            animatorX.start();
            animatorY.start();

            // 绘制itemView
            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
        }
    }
}

在这个示例中,我们使用了ObjectAnimator来分别对itemView的X和Y轴进行平移动画,将其移动到新的位置。您可以根据需要调整动画的插值器和持续时间来实现更好的效果。最后,调用super.onChildDraw方法来绘制itemView的外观。

请注意,示例代码中的动画持续时间设置为0,这样itemView将立即返回到原始位置。您可以根据需要调整动画的持续时间,以实现更平滑或更快速的返回效果。

相关内容

热门资讯

黑科技插件!aa扑克辅助,wp... 黑科技插件!aa扑克辅助,wpkai辅助,教你教程(有挂方法)-哔哩哔哩您好,aa扑克辅助,确实是有...
黑科技玄学!德扑ai智能机器人... 黑科技玄学!德扑ai智能机器人平台安装(智能ai)先前是真的有挂(有挂苹果版)-哔哩哔哩;人气非常高...
黑科技教学(wepoke是机器... 黑科技教学(wepoke是机器发牌吗)外挂透明挂辅助安装(透视)本来存在有挂(黑科技技巧)-哔哩哔哩...
黑科技私人局!wpk机器人(a... 黑科技私人局!wpk机器人(ai代打)太坑了有挂(解密教程黑科技攻略)-哔哩哔哩;亲,关键说明,wp...
黑科技安卓版(WPk)微扑克a... 黑科技安卓版(WPk)微扑克ai辅助(透视)辅助透视技能教程(本然是真的有挂);值得一提的是,微扑克...
黑科技肯定"微扑克有... 黑科技肯定"微扑克有计算器吗"德州软件辅助(原来真的是有挂)-哔哩哔哩1、下载好微扑克有计算器吗辅助...
黑科技脚本!wpk透视挂会被封... 黑科技脚本!wpk透视挂会被封号吗,wpk透视外挂购买渠道,可靠教程(有挂教程)-哔哩哔哩是一款可以...
黑科技智能ai!德州哪里有扑克... 黑科技智能ai!德州哪里有扑克辅助器(ai代打)一向是真的有挂(有挂智能)-哔哩哔哩;德州哪里有扑克...
黑科技辅助(微扑克的辅助工具苹... 黑科技辅助(微扑克的辅助工具苹果)外挂黑科技辅助插件(透视)确实真的有挂(黑科技黑科技)-哔哩哔哩1...
黑科技科技(AAPOker)辅... WePoke高级策略深度解析‌;黑科技科技(AAPOker)辅助效果实测(透视)记牌器(好像是真的有...