Der gute alte "touch" will nicht so wie ich will :D

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von computer_freak, 07.01.2011.

  1. computer_freak, 07.01.2011 #1
    computer_freak

    computer_freak Threadstarter Gewerbliches Mitglied

    Beiträge:
    156
    Erhaltene Danke:
    7
    Registriert seit:
    14.12.2010
    Hey!

    Ich habe auf meiner mainlayout.xml ein linearlayout, das weitere linearlayouts,
    buttons und textview kapselt.
    Nun will ich, dass, wenn man einen finger von links nach rechts/ rechts nach links bewegt sich der text ändert. Die events zum text ändern habe ich schon.

    Das witzige ist, auf der VM funktioniert's!


    Ich kann euch gerne mal meinen Ansatz zeigen:
    layout_Root ist das LinearLayout, indem alles drinn ist.
    Das Problem ist,
    Code:
            layout_Root.setOnTouchListener(new OnTouchListener()
            {
    
    	    @Override
    	    public boolean onTouch(View v, MotionEvent event)
    	    {
    		int action = event.getAction();
    		
    		Log.d("onTouch", String.valueOf(event.getPointerCount()));
    		
    		if(action == MotionEvent.ACTION_MOVE)
    		{
    		    Log.d("onTouch", "action == action move");
    		    float distanceX = event.getX(0) - Move_X;
    		    float distanceY = event.getY(0) - Move_Y;
    		    
    		    if(Math.abs(distanceX) > Math.abs(distanceY))
    		    {
    			if(distanceX > 0)
    			{
    			    Log.d("onTouch", "Moved positive x");
    			    ++MovePrecisionpX;
    			}
    			else
    			{
    			    Log.d("onTouch", "Moved negative x");		
    			    ++MovePrecisionnX;
    			}
    			
    			if(MovePrecisionpX >= 5)
    			{
    			    PreviewPrev(null);
    			    MovePrecisionpX = 0;
    			    MovePrecisionnX = 0;
    			}
    			
    			if(MovePrecisionnX >= 5)
    			{
    			    PreviewNext(null);
    			    MovePrecisionpX = 0;
    			    MovePrecisionnX = 0;
    			}
    			
    		    }
    		    
    		    Move_X = event.getX(0);
    		    Move_Y = event.getY(0);
    		}
    
    		
    		return false;
    	    }
                
            });
    Ich muss zugeben dass es nicht sonderlich gut gecoded ist :)
    Die App ist für version 2.2 entwickelt worden, auf meinem galaxy s i9000 ist jedoch nur android
    version 2.1 installiert.

    Halte ich das smarphone seitlich dann gehts!! Halte ich es "richtig" geht es nicht.


    Und: Muss ich es so machen wie oben; gibt es keine vordefinierten events wie etwa
    onTouch(TouchArgs ta)
    {
    switch(ta)
    {
    case TOUCH_EVENT_LEFT_TO_RIGHT:
    break;
    }

    }

    Dass würde das ganze noch ein stückchen leichter machen. So wundert es mich, dass ich solche vordefinierten events noch nicht gefunden habe, bei einem OS das auf touch basiert !

    Hoffe ihr könnt mir helfen!
     
  2. computer_freak, 08.01.2011 #2
    computer_freak

    computer_freak Threadstarter Gewerbliches Mitglied

    Beiträge:
    156
    Erhaltene Danke:
    7
    Registriert seit:
    14.12.2010
    +up+

    Gibt es noch andere möglichkeiten die touch events wie z.b.
    "Finger bewegte sich von links nach rechts" abzufangen? :D
     

Diese Seite empfehlen