Android中的onPress / onRelease

时间:2011-01-04 19:23:39

标签: android

是否有任何类型的onPress和onRelease for android按钮,如闪存?

5 个答案:

答案 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,而不是您的内容。您可以在ifelse 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;
        }
    });