onTouch 是将触摸屏运动事件传递到目标视图,或查看是否是目标。‘
onTouch方法是view设置触摸时间的方法,结合OnTouchListener 使用,
下面是常见的2中按压的方法,
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
private LinearLayout linearLayout;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 方法一
linearLayout = findViewById(R.id.main);
linearLayout.setOnTouchListener(this);
// 方法二
button = findViewById(R.id.btn);
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Toast.makeText(MainActivity.this, "按压了", Toast.LENGTH_SHORT).show();
}
return false;
}
});
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(this, "按压了屏幕", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
}
其实 MotionEvent有很多情况,ACTION_UP,ACTION_MOVE,ACTION_CANCEL等,写的时候会有提示的,字母就可以看出作用呢,就不再说了,
onTouchEvent
onTouchEvent方法是override 的Activity的方法。重新了Activity的onTouchEvent方法后,
当屏幕有touch事件时,此方法就会别调用
比如下面的代码触摸屏幕就会调用Toast --(onTouchEvent 在事件分发中处理activity和view 的,一般用在自定义view 中比较多一些,)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(this, "按压了屏幕", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}