安卓手机在使用过程中,交互行为最常见的动作有ACTION_DOWN(按下)、ACTION_MOVE(移动)、ACTION_UP(抬起)、ACTION_CANCEL ,ACTION_OUTSIDE以及多点触摸事件等。
一次点击事件(onClickListener)由 一次down事件,多次move事件和一次up事件构成,move事件出现的次数由用户的按压效果决定。down表示手势事件开始,up表示结束,move则代表着过程。此时代码中onTouchLishtener方法中返回的结果为ture,则表示拦截用户的该次行为,由此方法进行处理。而事件不再传递给其他的事件监听器(如onClickListenter)。
//以悬浮窗部分代码为例
view.setOnTouchListener(new View.OnTouchListener() {
private int x,y;
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
x = (int) motionEvent.getRawX();
y = (int)motionEvent.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int nowX = (int) motionEvent.getRawX();
int nowY = (int) motionEvent.getRawY();
int movedX = nowX - x;
int movedY = nowY - y;
x = nowX;
y = nowY;
layoutParams.x = layoutParams.x + movedX;
layoutParams.y = layoutParams.y + movedY;
// 更新悬浮窗控件布局
windowManager.updateViewLayout(view, layoutParams);
break;
default:
break;
}
return true;
}
});
MotionEvent的getRawX()、getRawY() 方法可获取当前移动到的位置(px)
MotionEvent的getAction()方法可获取当前动作:ACTION_DOWN(按下)、ACTION_MOVE(移动)、ACTION_UP(抬起)、ACTION_CANCEL ,ACTION_OUTSIDE。
如果touch事件中,返回了ture,则代表touch事件已处理用户的该次行为,不需要其他事件监听器进行处理,就不再将事件进行传递。如果返回了false,则代表未处理,需要将事件传递出去(即会被其他监听器监听到)。
Button/ImageButton可使用
单击监听OnClickListener或长时间单击(按住一段时间)OnLongClickListener文章来源:https://www.toymoban.com/news/detail-757530.html
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//执行代码
}
});
button.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View view) {
//执行代码
return true;
}
});
返回了ture,则代表事件已处理用户的该次行为,不需要其他事件监听器进行处理,就不再将事件进行传递。如果返回了false,则代表未处理,需要将事件传递出去(即会被其他监听器监听到)。文章来源地址https://www.toymoban.com/news/detail-757530.html
到了这里,关于Android手势监听、触摸监听器、onTouchListener的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!