`

2011.08.30——— android setOnTouchListener onTouchEvent

阅读更多
2011.08.30——— android setOnTouchListener onTouchEvent

参考:http://blog.csdn.net/tsiannian/article/details/6625999

测试代码如下:

package com.lp;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.TextView;


public class MainActivity extends Activity {
	private TextView tv;
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tv = (TextView) findViewById(R.id.tv);
		tv.setOnTouchListener(new OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				System.out.println("onTouchListener "+event.getRawX()+" "+event.getRawY());
				return false;
				//return true;
			}
		});
		tv.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				System.out.println("onclick");
			}
		});
	}
 
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		System.out.println("onTouchEvent "+event.getRawX()+" "+event.getRawY());
		return false;
 
	}
}



结论:
1、当在TextViw上触摸时 先触发setOnTouchLisener
   如果setOnTouchLisener返回false 会触发onTouchEvent 并且后续的move up都只会触发onTouchEvent
   如果setOnTouchLisener返回true 后续的move up 都只会触发setOnTouchLisener
2、当在其他位置触摸时 只会触发onTouchEvent
3、如果加上onClickListener时,
   如果setOnTouchLisener返回false 后续的move up都只会触发setOnTouchLisener;并且只有当up事件是在发生在textview上时 才会触发onclicklistener
   如果setOnTouchLisener返回true 后续的move up 也只会触发setOnTouchLisener 并且onclicklistner也不会执行


对了
当move触发setOnTouchLisener时 这个move不止是在TextView上 而是可以在整个activity上面

其实 这个很好理解 和http://lipeng88213.iteye.com/blog/1102048
是一样的

1、如果TextView的setonTouchListener返回为false 也就是说TextView不出来这个事件,这时就会向上传递给onTouchEvent 并且后续的也会直接传递给onTouchEvent
反之,就表明setonTouchListener处理这个事件
2、只要加上了onClickListener 就表明TextView会处理这个事件,但是事件会首先传递给setonTouchListener 如果它返回false 就会在up的时候出发click;如果它返回true,click就不会被执行了







分享到:
评论

相关推荐

    Android之泡泡效果bubble.rar

    Android之泡泡效果bubble package com.ray.bubble; import android.app.Activity; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import ...

    Google play效果 listViewGridView下拉刷新上拉加载更多,图片加载OOm问题

    android 仿google play效果,ListView/GridView下拉刷新,上拉加载更多,自动加载异步请求数据以及分页数据 package net.xinhua.activity; import net.xinhuamm.widget.TouchViewPager; import android.os.Bundle; ...

    Android 触屏setOnTouchListener实现图片缩放、移动、绘制和添加水印(源代码)

    该资源主要是参考博文 http://blog.csdn.net/eastmount/article/details/40536247,主要是Android触屏setOnTouchListener实现图片缩放、移动、绘制和添加水印,有四个按钮.点击“打开”从相册中加载一张图片,点击...

    Text111长按10秒种,触发操作提示功能,OnTouchListener倒计时功能,封装了方法类.zip

    Text111长按10秒种,触发操作提示功能,OnTouchListener倒计时功能,封装了方法类.zip

    RenRenSlideMenuDemo.zip

    content.setOnTouchListener(this); } /** * 初始化一些关键性数据。包括获取屏幕的宽度,给content布局重新设置宽度,给menu布局重新设置宽度和偏移距离等。 */ private void initValues() { ...

    应用启动页自定义跳转计时器View Demo

    import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics...

    Android 电子钢琴源码.zip

    这个小例子主要用到android手势部分和Mediaplayer部分的知识。 手势部分没啥问题,我们可以通过MotionEvent中定义的Event Code来判断当前手势的状态(按下或者释放等) imageButton_white1.setOnTouchListener(new...

    Android实现View的拖拽

    本文实例为大家分享了Android实现View拖拽的具体代码,供大家参考,具体内容如下 前言 实现View的拖拽,其实原理很简单。无非就是获取手指的位移信息,然后view根据手指的位移信息,移动对应的位置。 首先是获取手机...

    Android WheelMenu 安卓大转盘实现.zip

    Android WheelMenu 安卓大转盘实现,适合不会自定义view控件的朋友们学习, 自定义WheelMenu 继承ImageView ,设置对view 的点击事件监听 this.setOnTouchListener(new WheelTouchListener()); Android WheelMenu...

    安卓游戏2048

    setOnTouchListener(new View.OnTouchListener() { private float startX,startY,offsetX, offsetY; @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated ...

    Android View.OnTouchListener实现可获取连续的异步回调,同时以所需的轮询速率保持触摸状态。-Android开发

    OnViewTouchHoldListener Android View.OnTouchListener实现库以所需的轮询速率异步获取onViewTouchHold回调用法view.setOnTouchListener(OnViewTouchHoldListener(object:On OnViewTouchHoldListener Android ...

    android 视频处理代码

    mShootBtn.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { mRecorderView.record...

    Android-Wheel-MenuAndroid源代码

    description:WheelMenu 安卓大转盘实现,适合不会自定义view控件的朋友们学习, 自定义WheelMenu 继承ImageView ,设置对view 的点击事件监听 this.setOnTouchListener(new WheelTouchListener());

    Android实现标题显示隐藏功能

    本文实例尝试模仿实现Android标题显示隐藏功能,通过给listview设置 mListView.setOnTouchListener 监听 重写ontouch方法 监听手指一动的坐标,当超过ViewConfiguration.get(this).getScaledTouchSlop(); toubar的...

    星座说明书

    android:paddingTop="30dip" android:textColor="#00FFFF" android:textSize="18px" > <TextView android:id="@+id/textView3" android:layout_height="wrap_content" android:layout_width="fill_parent" ...

    Android对EditTex的图片实现监听

    本文为大家分享了EditTex图片实现监听的方法,供大家参考,具体内容如下 第一个例子:对EditText右边的... editText.setOnTouchListener(new OnTouchListener() { final int DRAWABLE_LEFT = 0; final int DRAWABLE

    Android手势Demo

    Android手势Demo,主要代码:mGestureDetector = new GestureDetector(new gestureListener()); mGestureDetector.setOnDoubleTapListener(new doubleTapListener()); mTextViewShow.setOnTouchListener(this); ...

    csnd版android

    (((ViewGroup) findViewById(android.R.id.content)).getChildAt(0)).setBackgroundColor(Color.parseColor("#ff121111")); // //hide the actionBar getActionBar().hide(); setupMenu(); cache = A...

    Android入门第十三篇之Gallery + ImageSwitcher.doc

    先贴出程序运行截图:除了Gallery可以拖拉切换图片,我在ImageSwitcher控件加入了setOnTouchListener事件实现,使得ImageSwitcher也可以在拖拉中切换图片。本例子依然使用JAVA的反射机制来自动读取资源中的图片。...

Global site tag (gtag.js) - Google Analytics