• 第09讲 常见事件响应2


    09常见事件响应2

    1. 长按事件:onLongClickListener

    添加button按钮(button1),在onCreate方法中通过findViewById找到button,之后设置点击button的长按响应。

    Button button=(Button) findViewById(R.id.button1);

    button.setOnLongClickListener(new OnLongClickListener(){

    publicboolean onLongClick(View v) {

    System.out.println("button长按事件。。。");

    return false;

    }

    });

    onLongClick 的返回值是一个boolean类型值:

    false:长按之后,后面也可以使用该button产生响应(如果再添加一个单机事件,会伴随有单击事件);

    true:长按之后,该长按事件消耗了该单击事件。

    2. 滑动事件:onTouchListener

    Button button = (Button)findViewById(R.id.button1);

    button.setOnTouchListener(newOnTouchListener() {

    public boolean onTouch(View v, MotionEventevent) {

    int actiontype=event.getAction();

    if(actiontype==MotionEvent.ACTION_DOWN){

    System.out.println("touchdown...");          //在DDMS的LogCat有输出

    }

    else if(actiontype==MotionEvent.ACTION_MOVE){

    System.out.println("touch move...");

    }

    else if(actiontype==MotionEvent.ACTION_UP){

    System.out.println("touch up");

    }

    else {

    }

    return true;

    }

    });

    event对象记录了事件发生的现场情况,比如单击位置

    元事件:action_down(点击鼠标),action_up(松开鼠标),action_move(移动鼠标)。各种事件是由元事件组成的。

    移动button的案例:

    首先,获取组件的容器layout。要引用该容器,需要给layout确定ID值。在layout的根节点中,添加 android:id="@+id/layout01"

    其次,在mainactivity.java中找到该layout,赋值给Viewgroup,直接对viewGroup进行OnTouch操作。Viewgroup是个容器,可以装下各种组件(view)。

    然后改变button在布局上的位置(需要将button设置为final类型)

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

    final Buttonbutton=(Button) findViewById(R.id.button1);

    viewGroup.setOnTouchListener(newOnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {

    int actiontype=event.getAction();

    if(actiontype==MotionEvent.ACTION_DOWN){

    System.out.println("touchdown...");

    }

    else if(actiontype==MotionEvent.ACTION_MOVE){

    System.out.println("touch move...");

    button.setX(event.getX());           //设置button的X坐标

    button.setY(event.getY());

    }

    else if(actiontype==MotionEvent.ACTION_UP){

    System.out.println("touch up");

    }

    return true;

    }

    });

    3.键盘事件OnKeyListener

                       final Button button =(Button) findViewById(R.id.button1);     

                  button.setOnKeyListener(newOnKeyListener(){

                         public boolean onKey(Viewv, int keyCode, KeyEvent event){

                                //a:29  w:51 s:47  d:32

                                System.out.println(keyCode);

                                if(29==keyCode){

                                       button.setX(button.getX()-20);            //点击a后,案件button向左移动20

                                }elseif(32==keyCode){

                                       button.setX(button.getX()+20);

                                }elseif(51==keyCode){

                                       button.setY(button.getY()-20);

                                }elseif(47==keyCode){

                                       button.setY(button.getY()+20);

                                }

                                return false;

                         }           

                  });

    4.焦点事件OnFocusChangeListener

    焦点事件跟我们的JS的焦点事件基本一个性质。但是Android得到焦点和失去焦点都在同个方法内运行

    随便拖一个TextBox在安卓里面叫EditText,输入事件代码:

    Button button = (Button) findViewById(R.id.button1);

    button.setOnFocusChangeListener(newOnFocusChangeListener(){

                       publicvoid onFocusChange(View v,boolean hasFocus){

                                System.out.println("button焦点事件。。。。");

                       }

    });

    可通过点击“Tab”键,显示输出"button 焦点事件。。。。"

  • 相关阅读:
    http
    Hive与HBase的区别与联系
    超好用python库(Pathlib)
    JS中every()和some()的用法
    kubectl create 和 kubectl apply区别
    Servlet/Tomcat/ Spring 之间的关系
    Android Fragment详解
    vue路由钩子拦截器beforeEach和afterEach及页面路由变化路由监听
    Vue + Webpack 将路由文件分拆为多个文件分别管理
    VUE中常用的几种import(模块、文件)引入方式
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171611.html
Copyright © 2020-2023  润新知