以前做项目只是简单应用一些点击事件以及滑动事件,有些细节方便不是很清楚,今天特意学习了一下,顺便分享,以便于以后的记忆
一、先说点击事件:
点击事件很简单,我们只要绑定点击事件的监听接口并实现点击事件的监听方法,在onClik方法中进行点击事件的处理即可。如点击事件监听接口OnClickListener、长按事件的监听接口OnLongClickListener等。下面是一个点击事件的简单实现过程:
<span style="font-size:14px;"><span style="font-family:SimSun;font-size:14px;">class CliclLister implements OnClickListener{
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.but:
if(v.isPressed()){
btn.setText("单击成功");
}else{
btn.setText("单击");
}
break;
}
}
}
</span></span>
Button绑定监听事件后,点击Button可以出发该事件,if(v.idPressed)内部的代码可以执行,但else后面的代码是不会执行的,如果我们想捕获点击事件时按下与弹起的这些动作,在该方法内是无法完成的。那如果我们详见听点击事件的按下与弹起怎么做呢?其实很简单,一种方法是我们自定义View,在自定义的View里面重写onTouchEvent方法实现这些手势的监听,不过这种方法是很愚蠢的,我们就只是想监听一下用户的简单手势还需要重写View的方法。其实还有更加简单的方法了,呵呵。。
二、再说OnTouchListener
最简单的方法就是实现OnTouchListener接口,在该接口中实现OnTouch方法來监听用户的手势操作。这里注意一下,如果我们为某一控件设置了OnTouchListener监听,那么该View本身内部的onTouchEvent方法是否会执行就要看OnTouchListener接口中onTouch方法的返回值了,如果返回值是true,那么View本身内部的onTouchEvent方法不会被调用,如果返回的是false,那么onTouchEvent也会被正常调用。由此可见OnTouchListener监听事件的优先级要比onTouchEvent高。
下面简单看一下OnTouchListener的简单实现:
<span style="font-size:14px;"><span style="font-family:SimSun;font-size:14px;">public class MainActivity extends Activity {
private Button but;
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
but = (Button) findViewById(R.id.but);
text = (TextView) findViewById(R.id.text);
but.setOnTouchListener(new MyTouchListener());
but.setOnClickListener(new MyClickListener());
}
class MyTouchListener implements OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case KeyEvent.ACTION_DOWN:
but.setText("已经按下按钮");
break;
case KeyEvent.ACTION_UP:
but.setText("按