您的位置:首页 > 其它

常用事件响应实习方式

2015-09-08 22:32 225 查看
一、单击事件onclick

1、动态设置

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

        button.setOnClickListener(new OnClickListener()

        {

   

              @Override

              public void onClick(View v) {

    

                   Toast.makeText(MainActivity.this, "click button", Toast.LENGTH_SHORT).show();

                }

         });

2、配置方式,仅限于onclick

   在配置文件中先声明一个回调函数。

xml中

     <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:onclick="test"

         />

MainActivity

    public void test(View view)

    {

     view.setX(view.getX()+10);

    }

 

 二、长按事件

button.setOnLongClickListener(new OnLongClickListener() {

   

   @Override

   public boolean onLongClick(View v) {

    // TODO Auto-generated method stub

    Toast.makeText(MainActivity.this, "long click", Toast.LENGTH_SHORT).show();

    return false;

   }

  });

如果返回false,将会继续触发事件,如点击事件。如何返回True,这不会再触发其他事件。

 

三、触发事件

 button.setOnTouchListener(new OnTouchListener() {  

   @Override

   public boolean onTouch(View v, MotionEvent event) {

    int actionType = event.getAction();

    if(actionType == MotionEvent.ACTION_DOWN)

    {

     System.out.println("tonch 按下...");

    }

    else if(actionType == MotionEvent.ACTION_MOVE)

    {

     System.out.println("tonch 移动...");

    }

    else if(actionType == MotionEvent.ACTION_UP)

    {

     System.out.println("touch 松开...");

    }

    else {

     

    }

    return false;

   }

  });

event  对象记录了 事件发生的现场对象

 

四、拖拽的小实习

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

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

      

       viewGroup.setOnTouchListener(new 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("tonch 按下...");

   }

   else if(actionType == MotionEvent.ACTION_MOVE)

   {

    float f = event.getX();

    float f1 = event.getY();

    button.setX(f);

    button.setY(f1);

    System.out.println("tonch 移动...");

   }

   else if(actionType == MotionEvent.ACTION_UP)

   {

    System.out.println("touch 松开...");

   }

   else {

    

   }

   

   return true;

  }

 });

 

viewGroup:获取整个布局里的控件view

return ture:说明你还没消费onTouch事件,在执行完你onTouch里面的代码之后,onTouch事件并没有结束。就是会自动地执行Gallery这个view里onTouch代码

return false:说明你已经消费完了onTouch事件,在执行完你的onTouch里面的代码之后,这个onTouch事件就结束了。

 五:焦点事件

 button.setOnFocusChangeListener(new OnFocusChangeListener() {

  

  @Override

  public void onFocusChange(View v, boolean hasFocus) {

   

   Toast.makeText(MainActivity.this, "焦点事件...", Toast.LENGTH_SHORT).show();

   

  }

 });

六、键盘事件

button.setOnKeyListener(new OnKeyListener() {

   

   @Override

   public boolean onKey(View v, int keyCode, KeyEvent event) {

    // TODO Auto-generated method stub

    String keyString = ""+keyCode;

    Toast.makeText(MainActivity.this, keyString, Toast.LENGTH_SHORT).show();

    return false;

   }

  });

要先获得焦点。

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: