android分组拖拽view,Android 拖拽View

/**

* @view 需要拖拽的view

* @data 拖拽需要携带的数据

*/

fun dragView(view: View,data:Any) {

var shadow = View.DragShadowBuilder(view)

ViewCompat.startDragAndDrop(view, null, shadow, data, 0)

}

下面是接受拖拽的区域的代码

layout.setOnDragListener { v, event ->

when (event?.action) {

DragEvent.ACTION_DRAG_ENTERED -> v.setBackgroundColor(GREEN)

DragEvent.ACTION_DRAG_EXITED -> v.setBackgroundColor(RED)

DragEvent.ACTION_DRAG_ENDED -> v.setBackgroundColor(WHITE)

DragEvent.ACTION_DROP -> {

val dropX = event.getX()

val dropY = event.getY()

val data = event.getLocalState()

var shape = ImageView(context)

shape.setImageResource(R.drawable.test)

var layoutParams = FrameLayout.LayoutParams(data.width, data.height)

layoutParams.marginStart = (dropX - data.width.toFloat() / 2).toInt()

layoutParams.topMargin = (dropY - data.height.toFloat() / 2).toInt()

ident_frame.addView(shape, layoutParams)

shape.setOnClickListener {

layout.removeView(it)

}

}

else -> {

}

}

true

}

注,event.getLocalState() 为生成 dragView 中的 data 一般会包括 dragView 的宽高等数据。

以上即可实现view拖拽。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值