关于 ontouchListener的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于 ontouchListener的问题

2016-03-11 13:58:45 1740 1
relativeLayout.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                int action = event.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN:
                    x=event.getX();
                    y=event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    mx=event.getX();
                    my=event.getY();
                    rx=mx-x;
                    ry=my-y;
                    mParams.x =(int) rx;
                    mParams.y =(int)ry;
                    mWM.updateViewLayout(ivCursor, mParams);
                    break;
                case MotionEvent.ACTION_UP:
                    
                    break;
                }
                return true;
            }
        });
        浮动框的代码       
        mWM = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);
    ivCursor = new ImageView(getBaseContext());
    ivCursor.setImageResource(R.drawable.ic_launcher);
    mParams = new WindowManager.LayoutParams();// 对ivCursor对象的参数描述对象
    mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;// 宽度自适应
    mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;// 高度自适应
    mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;// 设置成不能获取焦点
    mParams.type = LayoutParams.TYPE_PHONE;
    // 设置图片格式,效果为背景透明
    mParams.format = PixelFormat.RGBA_8888;
    mParams.x = 0;
    mParams.y = 0;
    mWM.addView(ivCursor, mParams);

当我手指滑动的时候 浮动框是跟着动的 松开后 再去滑动当发生move事件的时候浮空框就又从原点开始滑动了 有什么办法能让浮动框不从原点开始 就从停止的地方开始滑动啊 发生这种情况是代码出现的问题吗 还是android本身就是这样设计的 有没有大神帮忙解答下?

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:59:08

    应该是你这行代码出错了:
    mWM.updateViewLayout(ivCursor, mParams);
    你这行代码设置的窗体位置并不是以目前窗体所在的位置为基准,这是个绝对值。
    第一次你滑动的时候没有问题,是因为第一次本身就是在初始位置(0,0);
    第二次你滑动的时候,ACTION_DOWN只是记录当前按下坐标;当ACTION_MOVE的时候,因为rx和ry是目前点与按下点的差值,也就是说,你的这个滑动的值都是从0开始的;而你设置layout的话,就是根据你给的rx和ry设置的,并不是与当前位置的差值。
    你的这个滑动的差值始终从0开始,那么你这个窗体始终从(0,0)位置开始滑动。
    关于相对位置移动API,建议楼主看一看以下两个API:
    `offsetLeftAndRight(offsetX); //水平方向上移动
    offsetTopAndBottom(offsetY); //竖直方向上移动`

    0 0
相关问答

8

回答

短视频SDK如何做到视频原始比例裁剪?

EdgePlus 2017-09-13 17:35:01 39954浏览量 回答数 8

323

回答

云伴侣数据导入问题汇总(Android系统)

os_admin 2011-07-26 17:52:15 63516浏览量 回答数 323

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148937浏览量 回答数 22

15

回答

OSS学院:为什么我的图片会被下载?怎么在线播放影音?

leehon 2013-09-13 16:40:00 35846浏览量 回答数 15

1

回答

2020年了,跨平台开发框架现在怎样了?

问问小秘 2020-04-15 13:23:24 35608浏览量 回答数 1

26

回答

安卓与iOS百问,开发者系统指南

yq传送门 2017-05-31 17:16:00 34825浏览量 回答数 26

25

回答

数据库百问,教你快速上手数据库

yq传送门 2017-06-13 08:01:34 46216浏览量 回答数 25

8

回答

mail.aliyun.com邮箱android手机客户端设置方法

jack_yang 2013-04-24 09:01:34 124182浏览量 回答数 8

3

回答

JAVA web 【精品问答合集】

我是管理员 2018-07-13 16:02:35 28448浏览量 回答数 3

46

回答

H5技术百问——不懂H5你就OUT啦

yq传送门 2017-09-09 11:03:04 48471浏览量 回答数 46
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载