当前位置:首页 > 开发 > 移动开发 > 正文

Listener

发表于: 2014-10-09   作者:麦田的设计者   来源:转载   浏览:
摘要:     1、有如下事件:      setOnClickListener ,    setOnLongClickListener     setOnTouchListener    setOnFocusChangeListener  &nb

    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,来控制,组件的移动。

Listener

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Listener功能 它是基于观察者模式设计的,Listener 的设计对开发 Servlet 应用程序提供了一种快捷的
listener 在Web项目中,我们可以使用Listener接口来监听Container的中一些对象状态的变化,并且根据
1、了解如何使用HttpSessionListener监听session的销毁。 2、了解如何使用HttpSessionBindingListene
当web运用在web容器中运行时,会产生各种事件(如web启动,停止,用户的session创建,销毁,请求到
listener 在Web项目中,我们可以使用Listener接口来监听Container的中一些对象状态的变化,并且根据
今天做Advacned Replication实验的时候碰到一个问题,启动目标库监听时,出现The listener supports
Oracle Listener中常用命令 1.通过lsnrctl键入listener的控制台. 2.help查看可能使用的各种命令. 3.
能拿Tomcat怎么办? Tomcat是非常有名的开源容器,因其开源我们可以对其做定制化的改变,而且Tomcat
Servlet介绍-listener 一、 listener 在Web项目中,我们可以使用Listener接口来监听Container的中一
今天换进一个新项目组中,重新倒腾Oracle,可是配置Listener的时候在Windows服务中死活找不到数据库
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号