触摸事件顾名思义就是触摸手机屏幕触发的事件,当用户触摸添加了触摸事件的View时,就是执行OnTouch()方法进行处理,下面通过一个动态获取坐标的例子来学习OnTouchListener事件,效果如下:
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#ff00ff" android:textSize="20sp" android:text="实时显示坐标" /></LinearLayout>
MainActivity.java:
package com.example.onkeylistenerdemo;import android.app.Activity;import android.os.Bundle;import android.util.EventLog.Event;import android.view.MotionEvent;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends Activity { private TextView show = null; private LinearLayout linearLayout = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ show = (TextView)super.findViewById(R.id.show); linearLayout = (LinearLayout)super.findViewById(R.id.LinearLayout1); linearLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch(event.getAction()){ case MotionEvent.ACTION_DOWN: System.out.println("---action down-----"); show.setText("起始位置为:"+"("+event.getX()+" , "+event.getY()+")"); break; case MotionEvent.ACTION_MOVE: System.out.println("---action move-----"); show.setText("移动中坐标为:"+"("+event.getX()+" , "+event.getY()+")"); break; case MotionEvent.ACTION_UP: System.out.println("---action up-----"); show.setText("最后位置为:"+"("+event.getX()+" , "+event.getY()+")"); } return true; } }); }}
我在代码中加了输出,大家可以在logcat中清楚看见是如何执行的,我这里也不重复说明,今天就到这里了。