首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在setOnDragListener中使用两个按钮?

在setOnDragListener中使用两个按钮,可以通过以下步骤实现:

  1. 首先,创建两个按钮对象,并设置它们的拖拽监听器。例如,创建Button对象button1和button2,并为它们设置setOnDragListener监听器。
  2. 在setOnDragListener的onDrag()方法中,判断拖拽事件的动作类型。可以使用DragEvent对象的getAction()方法获取动作类型。
  3. 如果动作类型是ACTION_DRAG_STARTED,表示拖拽事件已经开始,可以执行一些初始化操作。
  4. 如果动作类型是ACTION_DROP,表示拖拽事件已经结束,可以执行相应的操作。在这里,可以根据拖拽事件的源视图来判断是哪个按钮被拖拽到了目标视图上。
  5. 在ACTION_DROP中,可以使用DragEvent对象的getClipData()方法获取拖拽事件的数据。可以将数据与按钮进行关联,例如使用按钮的Tag属性来存储数据。
  6. 根据拖拽事件的源视图来判断是哪个按钮被拖拽到了目标视图上,并执行相应的操作。可以使用按钮的Tag属性来获取关联的数据。

以下是一个示例代码:

代码语言:txt
复制
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);

button1.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        // 设置拖拽阴影
        View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
        // 开始拖拽
        v.startDrag(null, shadowBuilder, v, 0);
        return true;
    }
});

button2.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        // 设置拖拽阴影
        View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
        // 开始拖拽
        v.startDrag(null, shadowBuilder, v, 0);
        return true;
    }
});

button1.setOnDragListener(new View.OnDragListener() {
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int action = event.getAction();
        switch (action) {
            case DragEvent.ACTION_DRAG_STARTED:
                // 拖拽事件开始
                break;
            case DragEvent.ACTION_DROP:
                // 拖拽事件结束
                // 获取拖拽事件的数据
                ClipData clipData = event.getClipData();
                // 获取关联的按钮
                Button sourceButton = (Button) event.getLocalState();
                // 获取关联的数据
                String data = clipData.getItemAt(0).getText().toString();
                if (sourceButton == button1) {
                    // 拖拽到button1上的操作
                    // 根据数据执行相应的操作
                } else if (sourceButton == button2) {
                    // 拖拽到button2上的操作
                    // 根据数据执行相应的操作
                }
                break;
        }
        return true;
    }
});

button2.setOnDragListener(new View.OnDragListener() {
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int action = event.getAction();
        switch (action) {
            case DragEvent.ACTION_DRAG_STARTED:
                // 拖拽事件开始
                break;
            case DragEvent.ACTION_DROP:
                // 拖拽事件结束
                // 获取拖拽事件的数据
                ClipData clipData = event.getClipData();
                // 获取关联的按钮
                Button sourceButton = (Button) event.getLocalState();
                // 获取关联的数据
                String data = clipData.getItemAt(0).getText().toString();
                if (sourceButton == button1) {
                    // 拖拽到button1上的操作
                    // 根据数据执行相应的操作
                } else if (sourceButton == button2) {
                    // 拖拽到button2上的操作
                    // 根据数据执行相应的操作
                }
                break;
        }
        return true;
    }
});

这是一个简单的示例,你可以根据实际需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券