OnTouchListener、OnClickListener、OnLongClickListener

2024-01-24 02:32

本文主要是介绍OnTouchListener、OnClickListener、OnLongClickListener,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

android应用中常用的监听OnTouchListener、OnClickListener、OnLongClickListener,大家肯定经常使用。但是你真的知道它会产生的神奇效果么?不要忽视这些神奇效果哦!说不定这些神奇效果正是你想要的呢?好,下面请看我的示例。

示例、

首先在Activity中创建一个button,然后对这个button同时设置OnTouchListener、OnClickListener、onLongClickListener这三种监听方式。接着就是重写这三个接口的实现代码了。

java代码:


因为action_down最先触发的,下面的代码中我在action_down处理完需要做的事情之后就返回true,表示action_down 事件已经被消耗了。


运行结果如下

不管你怎么的click或者longclick 都不会得到响应的


如果将action_down的返回值改成false



则会变成


不要奇怪。。因为我按了两次。。第一次长按,第二次短按。结果却是这样的。为什么呢?这与网上有些朋友写的不一样啊?!是因为,

action_up返回了true,它在起作用。因为笔者我没有更改长按的时间而是使用系统的500ms,所以在手离开手机屏幕的时候就又有了一次long click。

如果你将action_up的返回值改成false


则得到的结果就是,从中你可以看出touch,click,long click的先后触发顺序了。



注意哦!

action_up 返回true时要注意哦。如果你同时使用这三种监听的话。action_up之后如果产生long click的话。button可是一直处于按下的状态哦!你可以从控件的颜色上看得到。

再者,使用OnLongClickListener的时候也要注意它的返回值,返回true时会使手机的振动一下。而返回false时则不会有这种效果。

其实你只要理解了事件处理机制,知道true和false在其中起着标志事件是否被消耗,如果消耗了就不再传递给其他控件了。如果没有消耗则还会传递给其他控件,触发其他控件的事件处理函数。使用的时候注意下就是了。这对高手来说,可能是小菜了,但是新手可能就没注意到三种事件监听同时使用时返回值会起到如此大的影响力。

这篇关于OnTouchListener、OnClickListener、OnLongClickListener的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638279

相关文章

Android 错误 The method onClick(View) of type new View.OnClickListener(){} must override a superclass

今天在网上下载了一个源代码,导入Eclipse后出现错误:The method onClick(View) of type new View.OnClickListener(){} must override a superclass 在网上查询后发现是JDK版本的问题。 解决办法: Project---->Properties---->javaCompiler中的Complier comp

The method onClick(View) of type new View.OnClickListener(){} must override a superclass

findViewById(R.id.button01).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {findViewById(R.id.text01).startAnimation(AnimationUtils.loadAnimation(AnimationActivity.this

关于OnTouchListener用法

常常会设置监听器,但是OnTouchListener类处理监听器类TouchListener时总是用错,借此记录下它的常用语法: package com.example.test;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Menu;imp

lint检查会报警告信息:(onTouchListener warning: onTouch should call View#performClick when a click is detecte

lint检查会报警告信息:(onTouchListener warning: onTouch should call View#performClick when a click is detected)–>onTouch在不执行touch时候应该断掉view的touch事件 错误使用: findViewById(R.id.fl_container).setOnTouchListener(ne

事件分发机制:从OnTouchListener开始,按钮变色的Demo

要彻底弄清楚事件分发机制,先要明白OnTouchListener的作用。 我们看下Android 1.6上,OnTouchListener的代码定义,源码在线地址:Android 1.6 sdk4 View.java 可以看到,OnTouchListener就是View类中的一个public接口,接口里面只有一个onTouch方法。这个方法有什么用了?我们写一个有按压效果的Button,体

(转)Button的OnClickListener的三种实现方法

onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。 代码分别如下: 1. xml指定onclick事件,这种方式比较适用于指定的button,能使java代码相对简化一些: xml文件中: <Button android:text="Button03"a

不能添加OnClickListener监听事件

报错一:The type new DialogInterface.OnClickListener(){} must implement the inherited abstract method DialogInterface.OnClickListener.onClick(DialogInterface, int) 或 报错二:The type new View.OnClickListen

View.OnClickListener

根据我学习的例子来讲讲View.OnClickListener 引用时应写:Import android.view.View.OnClickListener   方法 public abstract void onClick (View v) 参数 v:点击了的对象  下面是一个按钮点击改变标题的例子: .java package org.buttonsample

View点击事件:三种方式实现OnClickListener接口

1.创建内部类   创建一个内部类实现OnClickListener接口并重写onClick方法: protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button1=(Button