Android 可拖拽控件实现(onTouchListener 与 Translation)

最近遇到有需要实现拖拽功能的控件,之前也写过,只是没有做记录就需要重做,所以这次顺便记录一下,以后直接复制粘贴岂不快哉?!

demo.jpg

1. 主要思路
主要通过设置 View 的 OnTouchListener 达到监控拖拽信息的效果。根据 touch 事件的坐标信息变化控制控件的位置,这里使用的是 setTranslationX 与 setTranslationY 来改变 View 在屏幕上显示的位置,计算之后设定偏移即可。对于 touch 事件中坐标信息不熟悉的同学可以看一下这篇文章:Android View获取坐标值、相对距离的方法

2. 代码

package com.dongmodao.alpha;

import android.view.MotionEvent;
import android.view.View;

import androidx.annotation.IntDef;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

public class DragTouchListener implements View.OnTouchListener {
   

    @IntDef({
   HORIZONTAL, VERTICAL, FREE})
    @Retention(RetentionPolicy.SOURCE)
    private @interface OrientationMode {
   
    }

    public static final int HORIZONTAL = 0;
    public static final int VERTICAL = 1;
    public static final int FREE = 2;

    private float curX;
    private float curY;
    private float startX;
    private float startY;
    private float tranX;
    private float tranY;
    private int direct = FREE;

    private final View view;
    private OnDragListener listener;
    private</
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值