美文网首页旅行·在路上
Android_Touch点击事件

Android_Touch点击事件

作者: 书虫大王X | 来源:发表于2019-09-27 10:27 被阅读0次

1.什么是Touch事件:

用户点按屏幕,Touch事件产生;用户的手指离开屏幕,Touch事件结束。Touch事件被封装在MotionEvent中。


touch事件

2.Touch是事件的类型:

事件类型 说明
ACTION_DOWN 手指按下
ACTION_UP 手指离开屏幕
ACTION_MOVE 手指在屏幕上移动
ACTION_POINTER_DOWN 多手指按下
ACTION_POINTER_UP 多手指抬起
ACTION_CANCEL 取消点击事件

3.Touch事件的传递:

Touch事件传递时,从最下层开始向上层传递,也就是说出发点为Activity,逐层向上传递。Touch方法的返回值类型为Boolean类型,当返回值为true时,表示该事件被这个图层接收并消费了,事件不会继续传递;当返回值为false时,表示该事件被这个图层接收了,但不消费,事件还会继续往下传递。

4.常用方法:

方法 说明
MotionEventgetAction() 获取触摸事件,如:ACTION_DONW、ACTION_UP、ACTION_MOVE、以及ACTION_CANCEL
MotionEvent.getX() 消费触摸点的View从触摸点到它最左侧的距离
MotionEvent.getY() 消费触摸点的View从触摸点到它最上侧的距离
MotionEvent.getRawX() 消费触摸点的View从触摸点到屏幕最左侧的距离
MotionEvent.getRawY() 消费触摸点的View从触摸点到屏幕最左侧的距离

5.Touch事件的简单应用:

项目功能:创建一个图块获取Touch事件,使其跟随手指在屏幕上移动

第一步:在xml文件中创建一个红色视图:

//将布局方式改为相对布局
<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"
    //给容器加ID,方便外部调用
    android:id="@+id/rl">

<View
        android:id="@+id/v"
        android:layout_width="100dp"
        android:layout_height="100dp"
        //设置红色背景颜色
        android:background="@color/colorAccent"/>

第二部:在MainActivity中找到容器、View视图,并重写onTouch方法:

    //将视图和容器全局化
    RelativeLayout rl;
    View view;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rl = findViewById(R.id.rl);
        view = findViewById(R.id.v);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //获取触摸事件
        int action = event.getAction();
        if (action == MotionEvent.ACTION_DOWN){
            // 获取触摸点坐标
            int x = (int)event.getX();
            int y = (int)event.getY();
            // 改变视图坐标
            view.setX(x);
            view.setY(y);
        }else  if (action == MotionEvent.ACTION_MOVE){
             // 获取触摸点坐标
            int x = (int)event.getX();
            int y = (int)event.getY();
            // 改变视图坐标
            view.setX(x);
            view.setY(y);
        }
        return true;
    }
}

相关文章

  • Android_Touch点击事件

    1.什么是Touch事件: 用户点按屏幕,Touch事件产生;用户的手指离开屏幕,Touch事件结束。Touch事...

  • 8.点击事件的分发机制

    问题: listview控件点击事件,添加了长按点击事件和点击事件,发现,长按点击事件执行之后点击事件也被触发了。...

  • 点击事件

    var a = document.getElementById('anniu'); var c = documen...

  • 点击事件

    case R.id.btnBelongTown:geTown();openFilterTypeTown();bre...

  • 点击事件

    点击事件写的位置 以及文档加载

  • 点击事件

    vue的文档非常垃圾不要去百度 以@为族 @click.stop 防止事件冒泡 @click.native 清楚n...

  • 数据埋点之六:埋点需求设计

    主要埋点事件: 点击事件点击事件,用户点击按钮即算点击事件,不管点击后有无结果;点击一次记一次。 曝光事件成功打开...

  • (四)react事件

    一、 添加点击事件onClick 点击事件传递参数 二、es6语法传参 添加点击事件onClick 点击事件传递参数

  • 点击a标签触发点击事件后下载文件

    a标签 a标签下载文件 点击下载 添加点击事件 点击下载 因为 点击事件先于href执行 当点击事件返回true时...

  • 鼠标事件

    1. 鼠标事件 // 点击事件 onclick // 双击事件 ondblclick // 鼠标右键点击事件 on...

网友评论

    本文标题:Android_Touch点击事件

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