android拖拽控件实现,自定义拖动条android
终极管理员 知识笔记 69阅读
Android拖放startDragAndDrop拖拽onDrawShadow动态添加ViewKotlin3 


import android.content.ClipDataimport android.graphics.Canvasimport android.graphics.Pointimport android.os.Bundleimport android.util.Logimport android.view.DragEventimport android.view.Viewimport android.view.View.OnDragListenerimport android.view.View.OnLongClickListenerimport android.widget.FrameLayoutimport android.widget.ImageViewimport androidx.appcompat.app.AppCompatActivityimport androidx.core.content.ContextCompatclass MainActivity : AppCompatActivity() { private val TAG fly override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val imageView findViewById<ImageView>(R.id.image) val builder MyDragShadowBuilder(imageView) imageView.setOnLongClickListener(object : OnLongClickListener { //长按事件触发拖拽 override fun onLongClick(v: View?): Boolean { Log.d(TAG, onLongClick) val data ClipData.newPlainText(name, phil) imageView.startDragAndDrop( data, builder, null, 0 or View.DRAG_FLAG_GLOBAL or View.DRAG_FLAG_OPAQUE ) return true } }) imageView.setOnDragListener(object : OnDragListener { override fun onDrag(v: View?, event: DragEvent?): Boolean { when (event?.action) { DragEvent.ACTION_DRAG_STARTED -> Log.d(TAG, DragEvent.ACTION_DRAG_STARTED) DragEvent.ACTION_DRAG_ENTERED -> Log.d(TAG, DragEvent.ACTION_DRAG_ENTERED) DragEvent.ACTION_DRAG_ENDED -> Log.d(TAG, DragEvent.ACTION_DRAG_ENDED) } return true } }) } class MyDragShadowBuilder(private var mView: View) : View.DragShadowBuilder() { override fun onProvideShadowMetrics(outShadowSize: Point?, outShadowTouchPoint: Point?) { val width: Int mView.width * 2 val height: Int mView.height * 2 //拖动图像的宽和高 outShadowSize?.set(width, height) //手指在拖动图像的位置 中点 outShadowTouchPoint?.set(width / 2, height / 2) } override fun onDrawShadow(canvas: Canvas) { val width: Int mView.width * 2 val height: Int mView.height * 2 val image ImageView(mView.context) image.setImageResource(android.R.drawable.stat_notify_error) image.layoutParams FrameLayout.LayoutParams(width, height) val frameLayout FrameLayout(mView.context) frameLayout.setBackgroundColor( ContextCompat.getColor( mView.context, android.R.color.holo_green_light ) ) frameLayout.addView(image) frameLayout.measure(width, height) frameLayout.layout(0, 0, width, height) frameLayout.draw(canvas) } }}

图像随着手指拖放滑动
Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilderKotlin2-博客文章浏览阅读54次。Android DynamicGrid拖曳交换位置Android DynamicGrid是一个第三方开源项目DynamicGrid在github上的项目主页是 拖拽交换位置。Android View拖拽startDragAndDropKotlin-博客。
Android View拖拽startDragAndDropKotlin-博客一个Android手势缩放图片的工具类Android DynamicGrid拖曳交换位置Android DynamicGrid是一个第三方开源项目DynamicGrid在github上的项目主页是 拖拽交换位置。但是还有一些遗漏问题尚未解决垂直方向的拖曳。
标签: