0

我想保持按下按钮。我想在 onTouch() 中使用另一种方式而不是onPressed ( )。我添加了 setPressed()、setSelected()但没有用。当我在onTouch()中添加这些方法时,程序很好,但我的动画很慢。

我可以在 onClick() 方法中使用这些方法,但可以在这个方法中使用吗?请为我解释

4

4 回答 4

5

您可以在 -event 中设置按下状态,而不是使用将onClick按钮返回到非按下状态的onTouch-event:

yourbutton.setOnTouchListener(new OnTouchListener()
{
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        if(event.getAction() == MotionEvent.ACTION_DOWN)
        {
            ((Button) v).setPressed(true);
            //TODO: Add the code of your onClick-event here
        }
        return true;//Return true, so there will be no onClick-event
    }
});

如果这会影响任何动画,您应该在那里寻找问题。

于 2013-10-05T13:07:42.513 回答
1

这段代码使按钮作为切换按钮工作。它将按下的属性设置为相反的。

如果按下按钮,则将其设置为未按下。如果按钮未按下,则设置为按下。

  @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_DOWN) {
                        Button b = ((Button) v);
                        b.setPressed(!b.isPressed());//if pressed, unpress; if unpressed, press
                    }
                    return true;
                }
于 2017-01-03T21:42:01.583 回答
0

您所描述的似乎是一个切换按钮。也许您应该检查一下,而不是做一个骇人听闻的解决方案:

切换按钮

于 2013-10-05T13:10:00.717 回答
0

扩展切换按钮或:

Button button = (Button) view.findViewById(R.id.button1);
button.setTag(false);
button.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP)
            if ((boolean) v.getTag()) {
                v.setPressed(false);
                v.setTag(false);
                return false;
            } else {
                v.setPressed(true);
                v.setTag(true);
                return true;
            }
        return false;
    }
});
于 2015-07-29T22:32:45.277 回答