如何取消DelayedConfirmationView?

时间:2014-08-14 01:14:37

标签: android wear-os

根据标准的Android Wear UI,当用户在计时器完成之前再次点击它时,我试图取消DelayedConfirmationView上的确认动画。但是,只提供了start()方法,如API参考(可下载here)所示。

我尝试通过在取消时将setTotalTimeMs()设置为0来尝试解决方法,这会立即完成动画 - 但现在显示完整的圆形边框是永恒的!没有setCircleBorderWidth()方法可以通过它将边界减少到0,即使有相应的xml声明app:circle_border_width。 CircleImageView超类中的setProgress()方法似乎也没有做任何事情。

有没有人找到直接取消确认动画的方法,或者至少是将按钮设置为原始状态(无边框)的解决方法?

3 个答案:

答案 0 :(得分:1)

为了完整起见(虽然是部分的,因为按钮周围的圆圈仍然粘住,直到你重新给视图充气),我发布的代码是我必须用来停止计数器而不触发动作

@Override
public void onTimerSelected(View view) {
    if(mRunning) {
        mRunning = false;
        delayedConfirmationView.setTotalTimeMs(0);
    } else {
        view.setPressed(true);
        mRunning = true;
        delayedConfirmationView.start();
    }
}

@Override
public void onTimerFinished(View view) {
    view.setPressed(false);
    if (mRunning) {
        mRunning = false;
        performAction();
    } else {
        delayedConfirmationView.setTotalTimeMs(CONFIRMATION_TIME);
    }
}

答案 1 :(得分:1)

DelayedConfirmationView.reset()完成这项工作。

你只需要像其他答案中的cowst一样跟踪运行状态。

答案 2 :(得分:0)

谷歌在他们的样本中只使用

  

mDelayedView.setListener(空);

private DelayedConfirmationView mDelayedView;
...
mDelayedView = (DelayedConfirmationView) stub.findViewById(R.id.act_main__delayed_confirm);
...
private DelayedConfirmationView.DelayedConfirmationListener mDelayedViewListener =  new DelayedConfirmationView.DelayedConfirmationListener()
{
    @Override
    public void onTimerFinished(View view)
    {
        Log.d(LOG_TAG, "onTimerFinished() : Time out launching reboot");

        // User did not cancel, let's go
        ...
    }

    @Override
    public void onTimerSelected(View parView)
    {
        // User canceled, abort the action

        // Prevent onTimerFinished from being heard.
        mDelayedView.setListener(null);
        ...
    }
};