如何取消延迟确认视图



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

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

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

为了完整性(虽然是部分的,因为按钮周围的圆圈仍然会粘住,直到您重新膨胀视图(,我发布了我必须用来停止计数器而不触发操作的代码

@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);
    }
}

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

您只需要像 cowst 在另一个答案中所做的那样跟踪运行状态。

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

mDelayedView.setListener(null(;

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);
        ...
    }
};

最新更新