常用事件响应实习方式

来源:互联网 发布:ubuntu 16.04 安装 编辑:程序博客网 时间:2024/05/18 01:27

一、单击事件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;
   }
  });

要先获得焦点。

 

 

 

 

 

0 0
原创粉丝点击