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将立即返回到原始位置。您可以根据需要调整动画的持续时间,以实现更平滑或更快速的返回效果。

相关内容

热门资讯

一分钟秒懂!老友麻将有挂吗(辅... 一分钟秒懂!老友麻将有挂吗(辅助)好像有挂(2020已更新)(哔哩哔哩)1、每一步都需要思考,不同水...
微扑克游戏辅助器!微扑克专用辅... 自定义微扑克系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分享...
实用技巧!wepoke软件透明... We辅poker助赢率提升策略‌;实用技巧!wepoke软件透明挂可以弄(wepokeai机器人)W...
玩家必看秘籍!武汉麻将助赢神器... 玩家必看秘籍!武汉麻将助赢神器(透视)本来存在有挂(2021已更新)(哔哩哔哩)所有人都在同一条线上...
微扑克系统发牌规律!微扑克可以... 1、微扑克系统发牌规律!微扑克可以在软件内设置,微扑克其实存在有挂,软件教程(有挂软件);详细教程。...
wepoke透明挂黑科技!wo... wepoke透明挂黑科技!wopoker辅助器免费版v2.0(辅助透视)wepOke(一贯真的有挂)...
大家学习交流!丽水茶苑有外 挂... 大家学习交流!丽水茶苑有外 挂是真的吗(辅助)总是有挂(2023已更新)(哔哩哔哩)1、丽水茶苑有外...
微扑克辅助器ios!微扑克辅助... 微扑克辅助器ios!微扑克辅助器是真的,微扑克软件的规律(切实有挂辅助挂)1、每一步都需要思考,不同...
wepoke有辅助挂!wepo... wepoke有辅助挂!wepoke有机器人,wepoke靠谱,规律教程(有挂解密);值得一提的是,w...
科普!掌电竞技怎么开挂(透视辅... 科普!掌电竞技怎么开挂(透视辅助)确实是真的有挂(2022已更新)(哔哩哔哩)所有人都在同一条线上,...