当我只要求View.OnTouchListener()增加1时,它为什么工作得如此怪异呢?
public class Clicker extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clicker);
TextView t = (TextView) findViewById(R.id.counter);
ImageView v = (ImageView) findViewById(R.id.image);
if (v != null) {
v.setOnTouchListener(new View.OnTouchListener() {
int count = 3123;
@Override
public boolean onTouch(View arg0, MotionEvent me) {
v.setSelected(me.getAction()== MotionEvent.ACTION_DOWN);
count = count + 1;
t.setText(String.format("%d",count));
return true;
}
});
}
}
}

1点击增量2或3分。
发布于 2016-05-01 21:05:24
onTouch方法用于许多不同的触摸事件,包括ACTION_DOWN、ACTION_MOVE和ACTION_UP。只需单击按钮,此方法就会被调用两次,一次用于向下按压,一次是当您的手指被提起时。为了在按下按钮时只计算一次,您需要编写如下内容:
v.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
count += 1;
}
return true;
}
});发布于 2016-05-01 21:01:17
方法:
onTouch(View arg0, MotionEvent me)
每次触摸事件都会被调用。对于点击,您将收到两个事件MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP,如果您移动手指,您也可以收到一个MotionEvent.ACTION_MOVE。
https://stackoverflow.com/questions/36971765
复制相似问题