`
阅读更多

    1、有如下事件:

     setOnClickListener ,

   setOnLongClickListener

    setOnTouchListener

   setOnFocusChangeListener

   setOnKeyListener

 

2、形式:

   已知的XML文件

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/layout01">"

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

 button1.setOnLongClickListener(new View.OnLongClickListener() {
  
  @Override
  public boolean onLongClick(View v) {
   // TODO Auto-generated method stub
   System.out.println("长按");
   return false;
  }
 });
     button.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   System.out.println("单击");
  }
 });

长按一下button1后并且释放

输出:长按

         单击

得出在长按了组件后,两个事件都执行了。为了只执行长按的事件,需要在setOnLongClickListener的返回值里修改返回值。它决定了对组件长按后是否还加入一个短按。设为TRUE,则表明不加入短按;设为FALSE,则表明加入短按。

官方解释里:true和false在其中起着标志事件是否被消耗,如果消耗了就不再传递给其他控件了。如果没有消耗则还会传递给其他控件,触发其他控件的事件处理函数

 viewGroup=(ViewGroup)findViewById(R.id.layout01);

viewGroup.setOnTouchListener(new View.OnTouchListener() {
  
  @Override
  public boolean onTouch(View v, MotionEvent event) {
   // TODO Auto-generated method stub
   int actionType=event.getAction();
   if(actionType==MotionEvent.ACTION_DOWN){
    System.out.println("anxia");
   }else if(actionType==MotionEvent.ACTION_MOVE){
    button.setX(event.getX());
    button.setY(event.getY());
    System.out.println("yidong");

   }else if(actionType==MotionEvent.ACTION_UP){
    System.out.println("songkai");

   }


   return true;
  }
 });

 这个事件的参数很特别,加了一个MotionEvent。要注意,事件是由事件元组成的,它们是MotionEvent类的常量。如ACTION_DOWN,ACTION_MOVE等等。

不同的操作,打印不同的话。

 

最后还有setOnKeyClickListener

button.setOnKeyListener(new View.OnKeyListener() {
  
  @Override
  public boolean onKey(View v, int keyCode, KeyEvent event) {
   // TODO Auto-generated method stub
  //keyCode是一个整型,键盘上通过不同的按键对应着不同的值,我们可以通过这种思想,实现用键盘来操控组件。
  //a:29
   System.out.println(keyCode);
   if(29==keyCode){
    button.setX(button.getX()-20);
   }else
   if(32==keyCode){
    button.setX(button.getX()+20);
   }else
   if(51==keyCode){
    button.setY(button.getY()-20);
   }else
   if(47==keyCode){
    button.setY(button.getY()+20);
   }
   return false;
  }
 });

实现了用WASD,来控制,组件的移动。

分享到:
评论

相关推荐

    针对Oracle的TNS listener的攻击原理及方法介绍

    Oracle TNS Listener是Oracle数据库系统中用于监听客户端请求的关键组件。其基本功能是在网络上监听客户端发来的连接请求,并对这些请求做出响应。然而,TNS Listener也存在一系列安全漏洞,尤其是缓冲区溢出和配置...

    TcpListener异步通信

    本文将深入探讨如何使用C#实现一个简单的TcpListener来支持异步通信,允许多客户端同时连接。 首先,我们需要理解TcpListener类在C#中的作用。TcpListener是.NET Framework提供的一个类,用于监听特定IP地址和端口...

    SpringBoot整合Listener的两种方式.docx

    在Spring Boot应用中,整合Listener主要是为了监听应用的生命周期事件,例如在应用启动或关闭时执行特定的操作。这里我们讨论两种整合Listener的方式。 ### 方式一:通过注解扫描完成Listener组件的注册 1. **创建...

    RAC listener.ora详解.docx

    Oracle RAC 监听器配置文件 listener.ora 详解 Oracle RAC 监听器配置文件 listener.ora 是一个核心配置文件,用于配置 Oracle Net Listener 的参数。本文将详细介绍 listener.ora 文件的配置参数、协议地址参数、...

    c# socket 、TCPClient、TCPListener 用法详解.doc

    C# Socket、TCPClient、TCPListener 用法详解 C# 中的 Socket 编程是基于 Windows Sockets (Winsock) 接口的托管实现,提供了一个强大且灵活的网络编程模型。在本文中,我们将详细介绍 C# 中的 Socket 编程,包括 ...

    Tomcat中--Error listenerStart错误的解决方案

    ### Tomcat中Error listenerStart错误的解决方案 在Java Web应用开发过程中,经常遇到的一个问题是Tomcat启动时出现“Error listenerStart”这样的异常信息。本文将详细介绍这一问题的原因、可能涉及的因素以及具体...

    C#,winform,Tcp通信源码 使用TcpListener和TcpClient 源码

    在.NET框架中,C#语言提供了丰富的网络编程接口,其中包括TcpListener和TcpClient类,这两个类是用于实现基于TCP协议的客户端与服务器端通信的核心组件。本篇文章将深入探讨这两个类的工作原理、如何使用以及相关的...

    C#Winform使用TCPListener加多线程编程实现客户端服务器端聊天模式

    本文将深入探讨如何使用C#的Winform框架结合TCPListener和TCPClient,以及多线程技术,实现客户端与服务器端的聊天模式。此外,我们还将讨论如何通过委托来解决在非UI线程中操作控件时可能引发的异常。 首先,TCP...

    基于tcplistener和tcpclient的一对多通讯原型

    TcpListener listener = new TcpListener(IPAddress.Any, 1234); ``` 这行代码告诉服务器在所有可用的IP地址(`IPAddress.Any`)上监听1234号端口。 2. 开始监听: 使用`Start()`方法启动监听: ```csharp ...

    C#利用TcpClient/TcpListener类结合网络流建立的简单文件传输软件

    在C#编程环境中,开发基于TCP协议的文件传输软件是一项常见的任务,这通常涉及到使用`TcpClient`和`TcpListener`类以及网络流的概念。这两个类是.NET Framework提供的,用于实现客户端和服务器之间的TCP通信。下面...

    TcpListener 监听服务端

    TcpListener 是 .NET Framework 中用于创建 TCP 服务器端应用程序的关键组件。它允许程序监听来自多个客户端的连接请求,实现网络通信。在这个场景中,我们关注的是如何使用 TcpListener 创建一个可以处理多客户端...

    配置ORACLE的listener.ora、tnsnames.ora

    在Oracle数据库的运行过程中,`listener.ora`和`tnsnames.ora`是两个至关重要的配置文件,它们负责管理和通信数据库实例与客户端应用程序之间的连接。 `listener.ora`文件是Oracle监听器的配置文件,它定义了监听器...

    handler与listener的区别

    在ExtJS框架中,`handler`和`listener`都是用于响应用户交互的关键概念,它们各自有不同的使用场景和特点。理解两者的区别对于有效管理和组织应用的事件处理至关重要。 1. **Handler** - `handler`通常与`Action`...

    基于C# 的TcpClient/TcpListener的一对多的网络通信程序源码

    本文将深入探讨基于C#的TcpClient和TcpListener类如何用于构建一对一或多对多的网络通信程序,以及如何在Winform环境中实现这样的系统。 TcpClient和TcpListener是.NET Framework中的两个核心类,分别用于客户端和...

    listener监听器demo

    在Java编程语言中,`Listener`接口是一种常见的事件处理机制,它主要用于实现对象之间的通信。在Java Swing和Java AWT库中,`Listener`接口被广泛应用于用户界面(UI)组件,以响应用户的操作,例如按钮点击、窗口...

    c# tcplistener tcp监控

    `TcpListener`类是.NET Framework提供的一种用于创建TCP服务器的关键工具。本篇将深入探讨`TcpListener`类在C#中的应用以及如何实现TCP监控。 首先,TCP(传输控制协议)是一种面向连接的、可靠的网络通信协议,它...

    java jsp listener小用法

    在JSP中,监听器(Listener)是Servlet API的一部分,属于事件驱动模型,可以监听特定的事件并进行响应。本篇文章将深入探讨如何使用Java JSP的监听器来实现用户登录次数的记录。 一、理解监听器(Listener) 在...

    Oracle数据库监听器(LISTENER)和本地服务名(Tnsname)配置.docx

    Oracle 数据库监听器(LISTENER)和本地服务名(Tnsname)配置 本文主要介绍 Oracle 数据库监听器(LISTENER)和本地服务名(Tnsname)的配置,旨在帮助读者了解 Oracle 网络连接配置的主要组件和配置方法。 一、监听器...

    C# TcpListener/TcpClient Demo

    在.NET框架中,`TcpListener`和`TcpClient`是两个关键类,用于实现基于TCP协议的网络通信。本文将详细解析这两个类的功能、用法以及如何通过它们创建一个简单的C# TCP通信示例。 首先,`TcpListener`类是服务器端的...

    TCPListener异步接收数据.zip

    在.NET编程环境中,TCPListener是用于创建服务器端TCP网络服务的重要类。TCPListener异步接收数据的方法能够有效地处理大量并发连接,避免了由于线程资源消耗过大而导致的问题。本篇文章将详细探讨TCPListener异步...

Global site tag (gtag.js) - Google Analytics