如果我想让OnTouch事件重演,最佳解决方案是什么? 例如,如果我将手指放在屏幕上,我想要一个整数增加1,直到我从屏幕上移开手指?
编辑:谢谢你的回复:) 我可以用类似的方式处理画布吗?答案 0 :(得分:2)
创建一个计划每秒运行一次的计时器。保持运行并在每次运行时递增计数器。释放手指时停止计时器。
答案 1 :(得分:2)
结帐MotionEvent.ACTION_DOWN
,并点击此处。
MotionEvent.ACTION_UP
停止你的柜台。
答案 2 :(得分:2)
扩展ohdroid的答案:
您可以拥有一个boolean
变量,在初始化时需要将其设置为false。调用MotionEvent.ACTION_DOWN
时,将其设置为true并将计数器增量代码放入if块中,该块将布尔变量的值检查为条件。在MotionEvent.ACTION_UP
中,将值再次设置为false
代码示例:
View#setOnTouchListener(new OnTouchListner(){
int counter=0;
boolean flag=false;
public void onTouch(View view,MotionEvent event){
if(event==MotionEvent.ACTION_DOWN){
flag=true;
}
if(event==MotionEvent.ACTION_UP){
flag=false;
}
if(flag){
counter++;
}
}
});
修改:如果上述代码无效,请尝试使用AsyncTask
的以下代码:
boolean flag=false;
RunTask task=new RunTask();
int counter=0;
View#setOnTouchListener(new OnTouchListner(){
public void onTouch(View view,MotionEvent event){
if(event==MotionEvent.ACTION_DOWN){
flag=true;
task.execute(MyActivity.this);
}
if(event==MotionEvent.ACTION_UP){
flag=false;
task.cancel(true);
}
}
});
class RunTask extends AsyncTask<MyActivity,Integer, Integer>{
protected Integer doInBackground(MyActivity... params) {
while(params[0].flag)
counter++;
return counter;
}
}