当前位置: 代码迷 >> Android >> MotionEvent.ACTION_DOWN 及 ACTION_UP有关问题 简单的有关问题,求解
  详细解决方案

MotionEvent.ACTION_DOWN 及 ACTION_UP有关问题 简单的有关问题,求解

热度:68   发布时间:2016-05-01 12:03:59.0
MotionEvent.ACTION_DOWN 及 ACTION_UP问题 简单的问题,求解
本帖最后由 username_gyy 于 2011-07-11 16:22:46 编辑
一个按钮,捕获触屏的ACTION_DOWN及 ACTION_UP操作,在down时给按钮设置一高亮背景图,在up时设置一灰置背景图,为什么点击很快的时候(类似双击)不正常?  结果为一直显示高亮背景图, 为什么啊???

case R.id.ptz_down_btn:
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:// 屏幕按下
Log.e("11111111111 ", "11111111111");
                                                down_btn.setBackgroundDrawable(this.getResources().getDrawable(
                      R.drawable.ptz_down_focus));// 按键按下时高亮显示背景图,在点击抬起时再置灰;
break;
case MotionEvent.ACTION_UP:// 按下抬起
Log.e("22222 ", "2222222222222");
down_btn.setBackgroundDrawable(this.getResources()
                            .getDrawable(R.drawable.ptz_down_blur));// 按键按下时高亮显示背景图,在点击抬起时再置灰;
break;
}
break;



正常点击结果:
111111
2222222

点击很快的时候:
11111
2222222
11111


着急,求解,谢谢!!!

------解决方案--------------------
楼主 R.id.ptz_down_btn 是一个按钮吧, 你为什么要用event.getAction() 去做触摸判断?
为什么不用


button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//在这里就看以感应到按钮被按下时间
}
});


如果你真想用event.getAction() 

应该是重写父类onTouchEvent方法 


        //在这里在判断被按下!!!
@Override
public boolean onTouchEvent(MotionEvent event) {
// 获得触摸的坐标
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
// 触摸屏幕时刻
case MotionEvent.ACTION_DOWN:
UpdateTouchEvent(x, y);
break;
// 触摸并移动时刻
case MotionEvent.ACTION_MOVE:
break;
// 终止触摸时刻
case MotionEvent.ACTION_UP:
break;
}
return super.onTouchEvent(event);
}



希望可以帮到楼主!!
------解决方案--------------------
监听一下MotionEvent.ACTION_CANCEL试一下
------解决方案--------------------
有可能你的down事件里面做了太多的事,导致程序还没响应up你有down了
建议较多的事情放到另一个线程里面做,这样可以避免你说的那种情况。。。
------解决方案--------------------
实现双击监听