对话框中的 onTouchEvent

san*_*one 1 android timer ontouchlistener touch-event android-dialog

我已经onLongClickListener在 Android 中实现了Dialog使用计时器自动减少数字的按钮。这是代码

myIncreaseTimer = new Timer();
final Runnable runnable_decrease = new Runnable() {
    public void run() {
        int txt = Integer.parseInt(length.getText().toString());
        txt -= 1;
        length.setText(String.valueOf(txt));
        if (txt == 0) {
            myIncreaseTimer.cancel();
            myIncreaseTimer.purge();
            myIncreaseTimer = new Timer();
        }
    }
};
btnMinus.setOnLongClickListener(new View.OnLongClickListener() {
    public boolean onLongClick(View v) {
        myIncreaseTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(runnable_decrease);
            }
        }, 0, 300);
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

当我在活动中而不是对话框中时,我可以通过onTouchEvent用户触摸屏幕来停止减少

@Override 
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
        myIncreaseTimer.cancel();
        myIncreaseTimer.purge();
        myIncreaseTimer = new Timer();
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法在对话框中执行此操作。更重要的是,该对话框没有 onTouchEvent。

有谁知道我怎样才能既实现onTouchEventDialog或我应该在哪里停在了增加定时器Dialog

use*_*305 5

你不能在 Dialog 上处理 onTouch 所以

创建一个活动,在其上实现 onTouchListener,并在清单文件中

<activity android:theme="@android:style/Theme.Dialog">
Run Code Online (Sandbox Code Playgroud)

所以,现在你的活动看起来像一个对话框,