是否有任何类型的onPress和onRelease for android按钮,如闪存?
答案 0 :(得分:21)
试试这个:
someView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction()==MotionEvent.ACTION_DOWN)
runEnemy();
else
stopEnemy();
return true;
}
});
arg1.getAction() == 0 这是指ACTION_DOWN http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_DOWN
答案 1 :(得分:15)
为时已晚,但也许有人会发现它很有用:
mButton.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
Log.d("Pressed", "Button pressed");
else if (event.getAction() == MotionEvent.ACTION_UP)
Log.d("Released", "Button released");
// TODO Auto-generated method stub
return false;
}
});
答案 2 :(得分:8)
是。您必须使用OnTouchListener而不是onClickListener。 http://developer.android.com/reference/android/view/View.OnTouchListener.html
此外,这与闪存无关,不应标记为闪存。
答案 3 :(得分:1)
在android文档上查看Handling UI Events,如果你想听听并释放,你特别想要onTouch。如果你这样做只是为了改变按钮的外观,还有其他方法可以使用state lists在按钮中处理它。
答案 4 :(得分:1)
您可以更改mButton
,而不是您的内容。您可以在if
和else if
mButton.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
Log.d("Pressed", "Button pressed");
else if (event.getAction() == MotionEvent.ACTION_UP)
Log.d("Released", "Button released");
// TODO Auto-generated method stub
return false;
}
});
此代码来自我方:
// butona basınca bir ses çekince bir ses geliyor.
sescal.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
Log.d("Pressed", "Button pressed");
mp.start();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
Log.d("Released", "Button released");
mp2.start();
}
// TODO Auto-generated method stub
return false;
}
});