@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");
}
}
我想要日志 - >"触及"应该连续显示在日志中,直到释放手指。
请帮助
非常重要......我不能在没有这个的情况下继续进行ma项目。
答案 0 :(得分:5)
你不能在UI-Thread中这样做。在UI-Thread中运行的代码必须很短,以保持UI响应。
所以你需要创建一个线程。
示例代码:
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);
}
}
答案 1 :(得分:2)
每次触摸更新只会获得一个事件。因此,当用户发布时,您将获得ACTION_DOWN,然后可能是ACTION_MOVE和ACTION_UP。
你可以做一些重复的事情,直到你检查ACTION_UP,或者你也可以根据你的要求触发ACTION_MOVE。
这样的事情:
Handler handler = new Handler();
boolean pushingDown = false;
Runnable repeater = new Runnable() {
@Override
public void run() {
Log.e("pressing down", "pressing down");
if (pushingDown) {
handler.postDelayed(this, 10);
}
}
};
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
pushingDown = true;
handler.post(repeater);
}
if (event.getAction() == MotionEvent.ACTION_UP) {
pushingDown = false;
}
return super.onTouchEvent(event);
}