当前位置: 首页 > news >正文

Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilder,Kotlin(2)

Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilder,Kotlin(2)

import android.graphics.Canvas
import android.graphics.Point
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.util.Log
import android.view.DragEvent
import android.view.View
import android.view.View.OnDragListener
import android.view.View.OnLongClickListener
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import 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)imageView.setOnLongClickListener(object : OnLongClickListener {//长按事件触发拖拽override fun onLongClick(v: View?): Boolean {Log.d(TAG, "onLongClick")val builder = MyDragShadowBuilder(imageView)imageView.startDragAndDrop(null,builder,null,0)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 imageView: ImageView) : View.DragShadowBuilder() {//自定义绘制一个拖放时显示的阴影色块private val shadow = ColorDrawable(ContextCompat.getColor(imageView.context,android.R.color.holo_green_light))override fun onProvideShadowMetrics(outShadowSize: Point?, outShadowTouchPoint: Point?) {val width: Int = imageView.width * 2val height: Int = imageView.height * 2shadow.setBounds(0, 0, width, height)//拖动图像的宽和高outShadowSize?.set(width, height)//手指在拖动图像的位置 中点outShadowTouchPoint?.set(width / 2, height / 2)}override fun onDrawShadow(canvas: Canvas) {shadow.draw(canvas)}}
}

Android View拖拽startDragAndDrop,Kotlin-CSDN博客一个Android手势缩放图片的工具类;Android DynamicGrid:拖曳交换位置Android DynamicGrid是一个第三方开源项目,DynamicGrid在github上的项目主页是:https://github.com/askerov/DynamicGrid它实现在一个网格布局内,拖曳任意子view实现动态的交换位置,这很类似手机的桌面,手机桌面的图标,均可自由拖曳实现摆放位置的交换,如动图所示:_android 拖拽交换位置。但是还有一些遗漏问题尚未解决:垂直方向的拖曳。https://blog.csdn.net/zhangphil/article/details/133994955

http://www.lryc.cn/news/206204.html

相关文章:

  • 翻页视图ViewPager
  • 【可视化Java GUI程序设计教程】第4章 布局设计
  • Elasticsearch配置文件
  • 运维:mysql常用的服务器状态命令
  • k8s中kubectl陈述式资源管理
  • 11 个最值得推荐的 Windows 数据恢复软件
  • Docker从入门到实战
  • UE4 材质实操记录
  • http协议和Fiddler
  • 李宇航
  • 【JAVA学习笔记】38 - 单例设计模式-静态方法和属性的经典使用
  • m1 安装 cocoapods
  • 【大数据】Kafka 实战教程(一)
  • 求臻医学:肺癌患者就诊指南及基因检测意义
  • 【项目管理】项目中如何进行风险管理
  • 【算法题】得到K个半回文串的最小修改次数
  • C# 通过IP获取Mac地址(ARP)
  • 【QT】信号和槽
  • 有话则长,无话则短
  • 云台/稳定器/无人机姿态控制之欧拉角与四元数控制优缺点分析
  • Go 工具链详解(六):依赖管理神器
  • C语言解决约瑟夫环问题
  • 6.6 Elasticsearch(六)京淘项目改造
  • Socks5代理:数字化时代的技术支柱
  • 基本微信小程序的汽车租赁公司小程序
  • Leetcode刷题详解——搜索插入位置
  • centos升级openssh
  • 架构、框架、模式,极简文字介绍
  • Java实现Fisher‘s Exact Test 的置信区间的计算
  • YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022