Android TouchListener
上一章节中我们学习了 基于监听 的事件处理机制,本章节我们用一个范例来巩固下知识,顺便学习下基于事件监听机制的 TouchListener
OnTouchListener 相关方法与属性
方法只有一个
onTouch(View v, MotionEvent event)
参数说明
参数 | 说明 |
---|---|
v | 触发触摸事件的 UI 控件 |
event | 触碰事件 event,封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息,比如 event.getX(),event.getY() |
我们也可以对触摸的动作类型进行判断,使用 event.getAction()
再进行判断
event.getAction() == MotionEvent.ACTION_DOWN // 按下事件 event.getAction() == MotionEvent.ACTION_MOVE // 移动事件 event.getAction() == MotionEvent.ACTION_UP // 弹起事件
范例
简单的一个 ImageView 然后 setOnTouchListener
,重写 onTouch()
方法即可
-
创建一个 空的 Android 项目
cn.twle.android.TouchListener
-
下载 /static/i/meimei.jpg 并放到
res/drawable
目录 -
修改
activity_main.xml
添加一个ImageView
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/meimei" android:id="@+id/meimei" /> </RelativeLayout>
-
修改
MainActivity.java
给ImageView
添加TouchListener
事件package cn.twle.android.touchlistener; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.Toast; import android.view.View; import android.view.MotionEvent; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView meimei = (ImageView)findViewById(R.id.meimei); meimei.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Toast.makeText(MainActivity.this,"你通过监听器模式:OnTouchListener 摸了洒家~",Toast.LENGTH_LONG).show(); return true; } }); } }