博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android之土司的触摸点击事件
阅读量:4289 次
发布时间:2019-05-27

本文共 3322 字,大约阅读时间需要 11 分钟。

点击事件是一系列动作的组合;

private View view;    private WindowManager wm;
//自定义toast土司    private void toast(String address) {        wm = (WindowManager) getSystemService(WINDOW_SERVICE);        //用代码创建的view//        view = new TextView(getApplicationContext());//        view.setText(address);//        view.setTextSize(22);//        view.setTextColor(Color.RED);//用xml创建的view        final View view = View.inflate(this, R.layout.addressshowbackground, null);        TextView tv = view.findViewById(R.id.tv_addressback);        //设置触摸事件监听        view.setOnTouchListener(new View.OnTouchListener() {            private int startY;            private int startX;            @Override            public boolean onTouch(View v, MotionEvent event) {                int action = event.getAction();//获取当前事件的类型                switch (action) {                    case MotionEvent.ACTION_DOWN://按下                        //获取开始位置                        startX = (int) event.getX();                        startY = (int) event.getY();                        break;                    case MotionEvent.ACTION_MOVE://移动                        //获取结束的位置                        int endX = (int) event.getX();                        int endY = (int) event.getY();                        //手指的偏移量                        int dx = endX - startX;                        int dy = endY - startY;                        params.x+=dx;                        params.y+=dy;                        // 考到边界问题                        if(params.x<0){                            params.x=0;                        }else if(params.y<0){                            params.y=0;                        }else if(params.x>(wm.getDefaultDisplay().getWidth()-view.getWidth())){params.x=wm.getDefaultDisplay().getWidth()-view.getWidth();                        }else if(params.y>(wm.getDefaultDisplay().getHeight()-view.getHeight()){                            params.y=wm.getDefaultDisplay().getHeight()-view.getHeight();                        }                        wm.updateViewLayout(view,params);//更新布局                        //再次显示到imagev上,                        //更新一下开始的坐标                        startX = endX;                        startY = endY;                        break;                    case MotionEvent.ACTION_UP://抬起//保存endX和endY                        break;                    case MotionEvent.ACTION_CANCEL://取消                        break;                }                return true;//监听器处理完事件了,不要让父控件或父布局相应事件            }        });        view.setBackgroundResource(R.drawable.ic_launcher_background);//设置背景        tv.setText(address);        //设置窗体的参数        params = new WindowManager.LayoutParams();        params.height = WindowManager.LayoutParams.WRAP_CONTENT;        params.width = WindowManager.LayoutParams.WRAP_CONTENT;        params.gravity= Gravity.TOP+Gravity.LEFT;//土司的位置在左上        params.x=100;        params.y=100;        params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;        params.format = PixelFormat.TRANSLUCENT;//        params.type = WindowManager.LayoutParams.TYPE_TOAST;        params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;//具有电话优先级的窗体,如果要能获的手势使劲按,就要用这个,还要添加系统的权限        wm.addView(view, params);    }
 
wm.removeView(view);//移除窗体上的view

转载地址:http://xtmgi.baihongyu.com/

你可能感兴趣的文章
Cache和Buffer的区别
查看>>
50个sql语句
查看>>
MYSQL sql 语句性能分析
查看>>
C++操作Redis数据库
查看>>
python yield用法
查看>>
python pipe模块用法
查看>>
安装完 MySQL 后必须调整的 10 项配置
查看>>
开发者必备的 12 个 JavaScript 库
查看>>
http错误码
查看>>
python 多线程
查看>>
sipp命令 各参数含义
查看>>
搜集的动植物分类、检索网站
查看>>
ffmpeg源码分析之媒体打开过程
查看>>
Ubuntu/centos/redhat/SUSE sipp安装(带rtp支持,3.5.1版本)
查看>>
周鸿祎:很多程序员聪明,但我一看就知道他不会成功
查看>>
编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;
查看>>
Const指针 、 指向const的指针 、引用、指针
查看>>
GDB调试命令
查看>>
常见数据类型的字节数
查看>>
gcc/g++ 编译常见问题
查看>>