4

我已经制作了一个应用程序,它在低于 4.0 版的设备上运行得非常好,或者我们可以说 ics,但在 ics 之上它不能正常工作。在我的应用程序中,我试图同时在两个按钮上进行多点触控,它在 4.0 版以下完美运行。action_mask 的值是 6 nd 5 on touch 和 off touch .. 而在 4.0 以上的版本中,它的值为 1、2、0。为什么会这样?

enter code here

@override
public boolean ontouch(Event ev , MotionEvent event)    
{
    int actionResolved = event.getAction() & MotionEvent.ACTION_MASK;
    int action = paramMotionEvent.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK;
//  int actionShift = paramMotionEvent.getAction() & MotionEvent.ACTION_POINTER_INDEX_SHIFT;
    Log.i("fil", "action resolved" +actionResolved);
    if(i==MotionEvent.ACTION_DOWN)
    {

        Log.i("fil", "action down");
        Log.i("fil", "action down value" +MotionEvent.ACTION_DOWN);
    }


    if(actionResolved == 5);
    {

        Log.i("fil", "action resolved" +actionResolved);
        scannerview1.startAnimation(anim1);
        scannerView2.startAnimation(anim1);




    }   


    if(actionResolved ==6)
            {

            scannerView2.clearAnimation();
            scannerview1.clearAnimation();      
        }


return true;         
}
4

2 回答 2

1

我已经通过在行动中使用指针 id 解决了上述问题。但此代码在 4.0 版以下不可用

这是我的代码

@override
public boolean ontouch(Event ev , MotionEvent event)    
{
    switch (event.getAction() & MotionEvent.ACTION_MASK) 
    {               
        case MotionEvent.ACTION_DOWN:
            Log.i("D3", "pid" +event.getPointerId(0));
            //Log.i("D3", "pid" +event.getPointerId(1));
            if(event.getPointerId(0)==0){

            }
            if(event.getPointerId(0)==1) 
            {
                scannerview1.startAnimation(anim1);
                scannerView2.startAnimation(anim1);
            }
            break;
        case MotionEvent.ACTION_UP:
            scannerView2.clearAnimation();
            scannerview1.clearAnimation();
            break;
    }
    return true;
}
于 2013-03-04T11:47:48.580 回答
0

代替

if(actionResolved == 5);

采用

if(actionResolved == ACTION_POINTER_1_DOWN);

常量值可能并且确实在 API 版本之间发生变化。

另请注意,MotionEvent.ACTION_MASK已弃用。您应该改用“MotionEvent.ACTION_POINTER_INDEX_MASK”。

http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_POINTER_INDEX_MASK

于 2013-03-02T10:52:16.530 回答