根据标准的Android Wear UI,当用户在计时器完成之前再次点击它时,我试图取消DelayedConfirmationView
上的确认动画。但是,只提供了start()
方法,如API参考(可下载here)所示。
我尝试通过在取消时将setTotalTimeMs()
设置为0来尝试解决方法,这会立即完成动画 - 但现在显示完整的圆形边框是永恒的!没有setCircleBorderWidth()
方法可以通过它将边界减少到0,即使有相应的xml声明app:circle_border_width
。 CircleImageView超类中的setProgress()
方法似乎也没有做任何事情。
有没有人找到直接取消确认动画的方法,或者至少是将按钮设置为原始状态(无边框)的解决方法?
答案 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);
...
}
};