【发布时间】:2011-02-22 03:10:28
【问题描述】:
我怎样才能使当有人将手指滑入或滑过按钮时,按钮的行为就像被按下一样?
我正在寻找的一个例子是键盘应用程序。您可以将手指滑过所有按键以播放声音。
【问题讨论】:
标签: java android touch multi-touch
我怎样才能使当有人将手指滑入或滑过按钮时,按钮的行为就像被按下一样?
我正在寻找的一个例子是键盘应用程序。您可以将手指滑过所有按键以播放声音。
【问题讨论】:
标签: java android touch multi-touch
您可以像这样使用 OnTouchListener:
boolean firstTime = true;
OnTouchListener testTouchListener = new OnTouchListener(){
public boolean onTouch(View v, MotionEvent me){
Rect r = new Rect();
secondButton.getDrawingRect(r);
if(r.contains((int)me.getX(),(int)me.getY())){
//Log.i(myTag, "Moved to button 2");
if(firstTime == true){
firstTime = false;
secondButton.performClick();
}
}
if(me.getAction() == MotionEvent.ACTION_UP){
//When we lift finger reset the firstTime flag
firstTime = true;
}
return false;
}
};
firstButton.setOnTouchListener(testTouchListener);
虽然使用这种方法你会得到大量的触摸事件,因为 onTouch() 会被 MotionEvent.ACTION_MOVE 调用很多。所以你必须保留一个布尔值,告诉你它是否是第一次接到 onTouch() 电话。然后,您可以在 onTouch() 中为 MotionEvent.ACTION_UP 重置该布尔值,以便下次它再次工作。但是,如果您尝试做的不仅仅是 2 个按钮,这可能会变得有点复杂。我认为你必须为它们中的每一个单独保留一个布尔值(或者可能是一个布尔值数组来保存它们)。并且您需要为每个按钮添加一个额外的 if(r.contains(x,y) 语句。不过,这应该可以让您走上正确的道路。
【讨论】: