Android Multitouch will einfach nicht, was mach ich falsch?

Larsi

Mitglied
Hallo, ich habe wie oben erwähnt probleme mit multitouch

und zwar wird öfters mal nicht erkannt, das ein Finger drückt oder loslässt

hier mein jetztiger code (habe ihn mir aus mehreren tutorials zusammengebastelt):
Java:
    //Touch
	@Override
	public boolean onTouch(View v, MotionEvent event) {

		int ID;
		int Index;
		
		if (event.getAction() == MotionEvent.ACTION_POINTER_DOWN||event.getAction() == MotionEvent.ACTION_DOWN){
			
			Index=event.getActionIndex();
            ID = event.getPointerId(Index);
            if(ID == 0)
            {
                istouched = true;
            }
            if(ID == 1)
            {
                istouched2 = true;
            }
		}
		
        if(event.getAction() == MotionEvent.ACTION_MOVE)
        {

            int pointerCount = event.getPointerCount();
            for(int i = 0; i < pointerCount; ++i)
            {
                Index = i;
                ID = event.getPointerId(Index);
                if(ID == 0)
                {
                    touchX = (int)event.getX(Index);
                    touchY = (int)event.getY(Index);
                }
                if(ID == 1)
                {
                    touchX2 = (int)event.getX(Index);
                    touchY2 = (int)event.getY(Index);
                }
            }
        }

        if( event.getAction() == MotionEvent.ACTION_POINTER_UP||event.getAction() == MotionEvent.ACTION_CANCEL|| event.getAction() == MotionEvent.ACTION_UP){
            
			Index=event.getActionIndex();
            ID = event.getPointerId(Index);
            if(ID == 0)
            {
                istouched = false;
            }
            if(ID == 1)
            {
                istouched2 = false;
            }
    	}
        return true;
	}
ich währe über jede hilfe dankbar, ich mochte das endlich mal zum laufen bringen.
 
Habs selber geschafft, hatte mehrere kleine Fehler gemacht.

hier der jetzt endlich funktionierende code:
Java:
    //Touch
	@Override
	public boolean onTouch(View v, MotionEvent event) {

		int ID;
		int Index;
		int action;
		action=event.getActionMasked();
		
		if (action == MotionEvent.ACTION_POINTER_DOWN||action == MotionEvent.ACTION_DOWN){
			
			Index=event.getActionIndex();
            ID = event.getPointerId(Index);
            if(ID == 0)
            {
                istouched = true;
                touchX = (int)event.getX(Index);
                touchY = (int)event.getY(Index);
            }
            if(ID == 1)
            {
                istouched2 = true;
                touchX2 = (int)event.getX(Index);
                touchY2 = (int)event.getY(Index);
            }
		}
		
        if(action == MotionEvent.ACTION_MOVE)
        {

            int pointerCount = event.getPointerCount();
            for(int i = 0; i < pointerCount; ++i)
            {
                Index = i;
                ID = event.getPointerId(Index);
                if(ID == 0)
                {
                    touchX = (int)event.getX(Index);
                    touchY = (int)event.getY(Index);
                }
                if(ID == 1)
                {
                    touchX2 = (int)event.getX(Index);
                    touchY2 = (int)event.getY(Index);
                }
            }
        }

        if( action == MotionEvent.ACTION_POINTER_UP||action == MotionEvent.ACTION_CANCEL|| action == MotionEvent.ACTION_UP){
            
			Index=event.getActionIndex();
            ID = event.getPointerId(Index);
            if(ID == 0)
            {
                istouched = false;
            }
            if(ID == 1)
            {
                istouched2 = false;
            }
    	}
        return true;
	}
 

Zurück
Oben