我已在GDK documentation中读到有菜单选项,在选中时会为用户提供宽限期以通过向下滑动取消操作。
与您在Glass时间轴中点击某张卡时获得的删除选项一样。
我想知道如何实现这样一个有宽限期的菜单项?
答案 0 :(得分:1)
目前还没有内置的解决方案,这有点让人失望。希望在下一次更新时,他们将添加一系列应该一直在GDK中的基本功能。
请参阅https://github.com/pif/glass-progress-bar
该库非常完整,可以让你做任何你想做的事。
答案 1 :(得分:1)
以下内容应该这样做:
public static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
private Integer pendingAction;
private Boolean isActionPending = false;
private final Long TIMEOUT = 2000; //2 seconds
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (isActionPending) {
//TODO: better error handling
return false;
}
isActionPending = true;
pendingAction = item.getItemId();
new Thread( new Runnable() {
@Override
public void run() {
Thread.sleep(TIMEOUT);
MAIN_HANDLER.post(
new Runnable() {
@Override
public void run() {
onDoPendingAction();
}
}
);
}
}).start();
}
public void onDoPendingAction() {
if (!isPending ) {
return; //event was canceled
}
switch(pendingAction) {
case R.id.some_menu_action:
//Whatever you would do.
break;
/* other actions */
}
//TODO: something to indicate teh action finished.
}
public void cancelPendingAction() {
if (isPending) {
isPending = false;
//TODO: something to indicate it canceled.
}
}
添加手势检测器以捕获TWO_SWIPE_DOWN事件并调用cancelPendingAction();如果你发现它。在这里获取手势检测器代码。