在Android中连续"Action_DOWN"

Avt*_*ngh 2 android touch ontouchlistener

@Override
public boolean onTouchEvent(MotionEvent event) {

if(event.getAction()==MotionEvent.ACTION_DOWN){
Log.d(VIEW_LOG_TAG, "Touching Down");
}
    if(event.getAction()==MotionEvent.ACTION_UP){
Log.d(VIEW_LOG_TAG, "Not Touching");
}
}
Run Code Online (Sandbox Code Playgroud)

我想要Log - >"Touching Down"应该连续显示在Log中,直到释放手指.

请帮忙

它真的很重要......我不能在没有这个的情况下继续进行ma项目.

ben*_*n75 6

你不能在UI-Thread中做到这一点.在UI-Thread中运行的代码必须很短,以保持UI响应.

所以你需要创建一个线程.

  • ACTION_DOWN时启动线程
  • 在线程中:用你的日志写一个循环(使用一个标志来停止循环)
  • ACTION_UP:更改标志时(这将导致线程中的循环结束).

示例代码:

AtomicBoolean actionDownFlag = new AtomicBoolean(true);

Thread loggingThread = new Thread(new Runnable(){
     public void run(){
         while(actionDownFlag.get()){
             Log.d(VIEW_LOG_TAG, "Touching Down");
             //maybe sleep some times to not polute your logcat
         }
         Log.d(VIEW_LOG_TAG, "Not Touching");
     }
});

@Override
public boolean onTouchEvent(MotionEvent event) {

    if(event.getAction()==MotionEvent.ACTION_DOWN){
        loggingThread.start();
    }
    if(event.getAction()==MotionEvent.ACTION_UP){
        actionDownFlag.set(false);
    }
}
Run Code Online (Sandbox Code Playgroud)