android上的多点触控可提供不同的视图
如果我的视图中有两个按钮,我想同时为这两个按钮启用OntouchListener,我的意思是触摸第一个按钮启动一个任务,按住第一个按钮触摸第二个按钮启动另一个任务。如何操作?等待帮助。您可以在该视图中添加一个onTouchListener,它将处理多点触摸android上的多点触控可提供不同的视图,android,multi-touch,ontouchlistener,Android,Multi Touch,Ontouchlistener,如果我的视图中有两个按钮,我想同时为这两个按钮启用OntouchListener,我的意思是触摸第一个按钮启动一个任务,按住第一个按钮触摸第二个按钮启动另一个任务。如何操作?等待帮助。您可以在该视图中添加一个onTouchListener,它将处理多点触摸 @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction() & MotionEvent.ACTION_MA
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
//first finger went down
break;
case MotionEvent.ACTION_MOVE:
//a touch placement has changed
break;
case MotionEvent.ACTION_UP:
//first finger went up
break;
case MotionEvent.ACTION_CANCEL:
//gesture aborted (I think this means the finger was dragged outside of the touchscreen)
break;
case MotionEvent.ACTION_POINTER_DOWN:
//second finger (or third, or more) went down.
break;
case MotionEvent.ACTION_POINTER_UP:
//second finger (or more) went up.
break;
default: break;
}
return true;
}
检查您的按钮是否在各自的外壳内被单击。您可以在两个按钮上添加两个单独的
OnTouchListener
s,并在活动中用两个布尔值指示按钮的触摸状态,或者,您可以将一个ontouch Listener
添加到您的父视图中,并将MotionEvent
中指针的触摸坐标与两个按钮的坐标进行比较。因此,我不确定您想要完成什么,但您有如下功能:
private boolean mFirstButtonDown = false;
@Override
public boolean onTouchEvent(MotionEvent event){
// first button onTouchEvent
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
mFirstButtonDown = true;
break;
case MotionEvent.ACTION_UP:
mFirstButtonDown = false;
break;
}
....
}
对于第二个按钮,只需检查其是否仍保持不变:
@Override
public boolean onTouchEvent(MotionEvent event){
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
if (mFirstButtonDown && (event.getPointerCount() > 1)) {
// do task
}
}
要同时触摸两个按钮,请使用多个指针(或多点触摸),您可以在本文中找到更多详细信息:
另一篇可以帮助您理解多指针的好文章是关于Android开发者的:
上面的代码没有经过测试,它应该给你一个想法:)试试下面的代码片段
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
//first finger went down
break;
case MotionEvent.ACTION_MOVE:
//a touch placement has changed
break;
case MotionEvent.ACTION_UP:
//first finger went up
break;
case MotionEvent.ACTION_CANCEL:
//gesture aborted (I think this means the finger was dragged outside of the touchscreen)
break;
case MotionEvent.ACTION_POINTER_DOWN:
if(mFirstButton.isPressed() && mSecondButton.isPressed())
{// your code.}
break;
这很简单
@凌驾
公共布尔onTouch(视图v,运动事件arg1)
{
开关(v.getId()){
案例R.id.button1:
if(arg1.getAction()==MotionEvent.ACTION\u向下)
{
//你的活动
}
打破
案例R.id.按钮2:
if(arg1.getAction()==MotionEvent.ACTION\u向下)
{
//你的活动
}
打破
违约:
打破
}
返回true;
}但我已经为这两个按钮设置了两个单独的OnTouchListener。一旦一个按钮被按住,另一个按钮就不起作用了。布尔标志如何解决这个问题?在第二个按钮的OnTouchListener
中添加button1.isPressed()
,以检查第一个按钮是否被按下。@mamunshardar我面临同样的问题,您是否能够解决它?。当我的屏幕的一部分被按下后,就没有任何触摸事件记录。一旦一个按钮被按住,另一个按钮就不起作用。布尔标志如何解决这个问题?