欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

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上的项目主页是 拖拽交换位置。但是还有一些遗漏问题尚未解决垂直方向的拖曳。

标签:
声明:无特别说明,转载请标明本文来源!