Android 在视图上移动手指时如何识别悬停视图?
我是android新手,我想知道在不同视图上移动手指时如何识别悬停视图。例如,如果我的活动有5个线性布局a、B、C、D、E,如果我从C移动到B,然后移动到E,我想确定这一点。请如果有人知道如何实现,你能给我一个例子 到目前为止我已经尝试过的代码Android 在视图上移动手指时如何识别悬停视图?,android,ontouchlistener,Android,Ontouchlistener,我是android新手,我想知道在不同视图上移动手指时如何识别悬停视图。例如,如果我的活动有5个线性布局a、B、C、D、E,如果我从C移动到B,然后移动到E,我想确定这一点。请如果有人知道如何实现,你能给我一个例子 到目前为止我已经尝试过的代码 @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_HOVER_ENT
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER) {
switch (v.getId()) {
case R.id.linearLayoutA:
Log.d(getClass().getSimpleName(), "entered A");
break;
case R.id.linearLayoutB:
Log.d(getClass().getSimpleName(), "entered B");
break;
case R.id.linearLayoutC:
Log.d(getClass().getSimpleName(), "entered c");
break;
case R.id.linearLayoutD:
Log.d(getClass().getSimpleName(), "entered d");
break;
case R.id.linearLayoutE:
Log.d(getClass().getSimpleName(), "entered e");
break;
}
}
return true;
}
谢谢。在活动中实现View.OnTouchListener 获取物品触摸的矩形区域,然后如果触摸点位于该矩形区域内,则执行某些操作
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
rect1 = new Rect(linearLayout1.getLeft(), linearLayout1.getTop(),
linearLayout1.getRight(), linearLayout1.getBottom());
rect2= new Rect(linearLayout2.getLeft(), linearLayout2.getTop(),
linearLayout2.getRight(), linearLayout2.getBottom());
}
/////////////////////////////
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getActionMasked() == (MotionEvent.ACTION_DOWN|MotionEvent.ACTION_MOVE)) {
if (rect1.contains((int) event.getX(), (int) event.getY())) {
//do something when touch or moving on linearlayout1 area
} else if (rect2.contains((int) event.getX(), (int) event.getY())) {
//do something when touch or moving on linearlayout2 area
}
}
return true;
}
在活动中实现View.OnTouchListener 获取物品触摸的矩形区域,然后如果触摸点位于该矩形区域内,则执行某些操作
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
rect1 = new Rect(linearLayout1.getLeft(), linearLayout1.getTop(),
linearLayout1.getRight(), linearLayout1.getBottom());
rect2= new Rect(linearLayout2.getLeft(), linearLayout2.getTop(),
linearLayout2.getRight(), linearLayout2.getBottom());
}
/////////////////////////////
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getActionMasked() == (MotionEvent.ACTION_DOWN|MotionEvent.ACTION_MOVE)) {
if (rect1.contains((int) event.getX(), (int) event.getY())) {
//do something when touch or moving on linearlayout1 area
} else if (rect2.contains((int) event.getX(), (int) event.getY())) {
//do something when touch or moving on linearlayout2 area
}
}
return true;
}
如果有人知道,你能告诉我实施的方式吗?如果有人知道,你能告诉我实施的方式吗?