Android----ViewDragHelper(自定义拖拽) ---- 之一

Android----ViewDragHelper(自定义拖拽) ---- 之一,第1张

概述功能自定义可以拖拽的view创建流程创建自定义可以拖拽的viewGroup实例化viewDragHelpercallback内部方法重写xml布局中添加简单的代码实现packagecom.field.dragdemo;importandroid.content.Context;importandroid.util.AttributeSet;importandroid. 功能
自定义可以拖拽的vIEw创建流程
创建自定义 可以拖拽的 vIEwGroup
实例化 vIEwDragHelper
callback 内部方法 重写
xml布局中添加简单的代码实现
package com.fIEld.dragdemo;import androID.content.Context;import androID.util.AttributeSet;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.Widget.relativeLayout;import androIDx.annotation.NonNull;import androIDx.customvIEw.Widget.VIEwDragHelper;/** * 1.创建自定义 可以拖拽的 vIEwGroup * 2.实例化 vIEwDragHelper * 3.callback 内部方法 重写 * 4.xml布局中添加 */public class MyrelativeDragLayout extends relativeLayout {    //输入 logt 快速生成TAG    private static final String TAG = "MyrelativeDragLayout";    //    private VIEwDragHelper mVIEwDragHelper;    public MyrelativeDragLayout(Context context) {        this(context,null);    }    public MyrelativeDragLayout(Context context, AttributeSet attrs) {        this(context, attrs,0);    }    public MyrelativeDragLayout(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        //实例化拖拽帮助类  1.this -- 当前对象 2.当前对象 内部处理拖拽事件的回调        mVIEwDragHelper = VIEwDragHelper.create(this, new VIEwDragHelper.Callback() {            //尝试捕获当前VIEwGroup内部的vIEw,利用多态 获取 child的 ID 如果满足条件 就返回 true,不满足就 返回 false            @OverrIDe            public boolean tryCaptureVIEw(@NonNull VIEw child, int pointerID) {                int ID = child.getID();                if (ID == R.ID.drag_img){                    return true;                }else {                    return false;                }            }            //可以垂直拖动的距离            @OverrIDe            public int clampVIEwpositionVertical(@NonNull VIEw child, int top, int dy) {                return top;            }            //可以水平拖动的距离            @OverrIDe            public int clampVIEwpositionHorizontal(@NonNull VIEw child, int left, int dx) {                return left;            }        });    }    //vIEwDragHelper拦截 ev    @OverrIDe    public boolean onIntercepttouchEvent(MotionEvent ev) {        return mVIEwDragHelper.shouldIntercepttouchEvent(ev);    }    //vIEwDragHelper处理event 一定要返回true    @OverrIDe    public boolean ontouchEvent(MotionEvent event) {        mVIEwDragHelper.processtouchEvent(event);        return true;    }}
package com.fIEld.dragdemo;import androIDx.appcompat.app.AppCompatActivity;import androID.os.Bundle;public class MainActivity extends AppCompatActivity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);    }}
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    tools:context=".MainActivity">    <!--创建自定义view-->    <com.fIEld.dragdemo.MyrelativeDragLayout        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent">        <ImageVIEw            androID:ID="@+ID/drag_img_1"            androID:layout_wIDth="100dp"            androID:layout_height="100dp"            androID:layout_centerInParent="true"            androID:src="@color/colorPrimary"/>    </com.fIEld.dragdemo.MyrelativeDragLayout></relativeLayout>
总结

以上是内存溢出为你收集整理的Android----ViewDragHelper(自定义拖拽) ---- 之一全部内容,希望文章能够帮你解决Android----ViewDragHelper(自定义拖拽) ---- 之一所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存