第08讲- 常见事件响应的实现方式对比
第08讲常见事件响应的实现方式对比
1. 单击事件:onClickListener
2. 长按事件:onLongClickListener
3. 滑动事件:onTouchListener
4. 键盘事件:onKeyListener
5. 焦点事件:setOnFocusChangeListener
一、实现方式(以单击事件为例)
1. 动态设置(最常见的方式)
添加button按钮(button1),在onCreate方法中通过findViewById找到button,之后设置点击button的响应,比如弹出提示框。
Button button=(Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { <span style="white-space:pre"> </span>Toast.makeText(MainActivity.this, "button被点击了", Toast.LENGTH_SHORT).show(); } });
2. 配置方式(仅仅限于onclick事件)
在activity.xml中button属性中添加android:onClick="test" 之后,在mainactivity.java中添加一个test方法,在该方法中设置button的响应。其中传入的view值就是被点击的button
public void test(View view) { view.setX(view.getX()+10); //实现点击后按钮x坐标向右移动10 }
3. 可复用方式(这种方式适用于重复可复用代码)
在动态设置的基础上进行修改
Button button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(mylistener);
Button button2=(Button)findViewById(R.id.button2); button2.setOnClickListener(mylistener);
之后设置一个变量mylistener
private View.OnClickListenermylistener=new OnClickListener() { public void onClick(View v) { <span style="white-space:pre"> </span>Toast.makeText(MainActivity.this, "button被点击了",Toast.LENGTH_SHORT).show(); } };
采用可复用方式好处在于,当有多个button时可以多次重复利用同一个mylistener, 例如可以添加switch方法实现不同的响应。
public void onClick(Viewv) { switch (v.getId()) { <span style="white-space:pre"> </span>case R.id.button1: <span style="white-space:pre"> </span> Toast.makeText(MainActivity.this,"button1被点击了", Toast.LENGTH_SHORT).show(); <span style="white-space:pre"> </span> break; <span style="white-space:pre"> </span>case R.id.button2: <span style="white-space:pre"> </span> Toast.makeText(MainActivity.this,"button2被点击了", Toast.LENGTH_SHORT).show(); <span style="white-space:pre"> </span> break; <span style="white-space:pre"> </span>case R.id.button3: <span style="white-space:pre"> </span> Toast.makeText(MainActivity.this, "button3被点击了",Toast.LENGTH_SHORT).show(); <span style="white-space:pre"> </span> break; <span style="white-space:pre"> </span>default: <span style="white-space:pre"> </span> break; } }