美文网首页
安卓 让View追随你的手指移动、移动~

安卓 让View追随你的手指移动、移动~

作者: 隔壁老王的杂货铺 | 来源:发表于2018-04-11 14:43 被阅读0次

先来个图吧

大概的效果就是这样,代码就一个监听事件,把需要移动的View添加这个监听事件就可以了,具体的参数要根据自己的项目情况而定。

private View.OnTouchListenershopCarSettleTouch =new View.OnTouchListener() {

int rawY1,rawX1,rawY,rawX;//手指落下和抬起的位置 用来判断用户是移动图标还是点击事件

    int rr,ll;//当用户放开手指的时候  ,通过位置判断 让View自动靠边

    int lastX,lastY;// view的的当前位置  用来计算更新view的位置

    @Override

    public boolean onTouch(View v, MotionEvent event) {

int ea = event.getAction();

DisplayMetrics dm = getResources().getDisplayMetrics();

int screenWidth = dm.widthPixels;

int screenHeight = dm.heightPixels;//需要减掉图片的高度

        switch (ea) {

case MotionEvent.ACTION_DOWN:

lastX = (int) event.getRawX();//获取触摸事件触摸位置的原始X坐标

                lastY = (int) event.getRawY();

rawX1 = (int) event.getRawX();

rawY1 = (int) event.getRawY();

case MotionEvent.ACTION_MOVE:

//event.getRawX();获得移动的位置

                int dx = (int) event.getRawX() -lastX;

int dy = (int) event.getRawY() -lastY;

int l = v.getLeft() + dx;

int b = v.getBottom() + dy;

int r = v.getRight() + dx;

int t = v.getTop() + dy;

//下面判断移动是否超出屏幕

                if (l <0) {

l =0;

r = l + v.getWidth();

}

if (t <30) {

t =30;

b = t + v.getHeight();

}

if (r > screenWidth) {

r = screenWidth;

l = r - v.getWidth();

}

if (b > screenHeight -200) {

b = screenHeight -200;

t = b - v.getHeight();

}

v.layout(l, t, r, b);

lastX = (int) event.getRawX();//获取触摸事件触摸位置的原始X坐标

                lastY = (int) event.getRawY();

v.postInvalidate();

break;

case MotionEvent.ACTION_UP:

this.rawX = (int) event.getRawX();

this.rawY = (int) event.getRawY();

if (v.getLeft() < (screenWidth /2 + v.getWidth() /2)) {

ll =20;

rr =ll + v.getWidth();

}

if (v.getRight() > (screenWidth /2 + v.getWidth() /2)) {

rr = screenWidth -20;

ll =rr - v.getWidth();

}

v.layout(ll, v.getTop(),rr, v.getBottom());

v.postInvalidate();

if (Math.abs(this.rawX -rawX1) >20 || Math.abs(this.rawY -rawY1) >20) {

return true;

}

break;

}

return false;

}

};

相关文章

  • 安卓 让View追随你的手指移动、移动~

    先来个图吧 大概的效果就是这样,代码就一个监听事件,把需要移动的View添加这个监听事件就可以了,具体的参数要根据...

  • 鼠标控制旋转

    鼠标在PC端移动,实现对象的旋转;手指在安卓端移动,实现对象的旋转。

  • 一、移动端知识清单

    什么是移动端? 移动端指的是手机(安卓手机,ios手机)、平板电脑(安卓、ios)、ipod等便携设备 作为开发者...

  • 移动View随着手指

    一根或者多根手指在view上移动,系统会自动调用view的下面方法(随着手指的移动,会持续调用该方法) 一根或者多...

  • Android Gson使用详解

    Android Gson使用详解(出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户)

  • Flutter之Dialog 对话框各种用法

    前言: 各位同学大家好 ,相信移动端(安卓, iOS )和前端的同学都有使用过dialog对话框 ,移动端(安卓 ...

  • 2019-10-25

    今天把安卓移动开发实验做了。

  • Android防自定控件抖动

    在最近的项目中碰到需要用手指控制View移动的需求,实现的过程中发现View会随着手指的移动而抖动,并且抖动程度随...

  • 2019-11-05

    做一下安卓移动开发实验!

  • 求助:vue移动端(安卓、电脑能访问数据,苹果跨域)

    求助:vue移动端(安卓、电脑能访问数据,苹果跨域) 最近用vue开发移动端,发现在安卓上、电脑上能正常访问数据,...

网友评论

      本文标题:安卓 让View追随你的手指移动、移动~

      本文链接:https://www.haomeiwen.com/subject/cpsjcftx.html