2016-07-20 21 views
3

Ich weiß, wie man die Taste auf einen bestimmten Wert skaliert, aber gibt es eine Möglichkeit, die Tastengröße pro Zeit zu erhöhen/verringern, solange der Benutzer es berührt? Etwas wie folgt aus:Android Waage Knopf bei Berührung

Button myButton = (Button)findViewById(R.id.myButton); 
    myButton.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       // Some timer action here or is there a better way? 
       v.setScaleX(v.getScaleX() + 0.1f); 
       v.setScaleY(v.getScaleY() + 0.1f); 
       return true; 
      } 
      else if(event.getAction() == MotionEvent.ACTION_UP) { 
       v.setScaleX(1); 
       v.setScaleY(1); 
       return true; 
      } 

      return false; 
     } 
    }); 

Andere Idee - nicht funktioniert:

myButton.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       Timer timer = new Timer(); 
       TimerTask timerTask = new TimerTask() { 
        @Override 
        public void run() { 
         myButton.setScaleX(myButton.getScaleX() + 0.1f); 
         myButton.setScaleY(myButton.getScaleY() + 0.1f); 
        } 
       }; 
       while(event.getAction() != MotionEvent.ACTION_UP){ //Seems to be an infinite loop 
        timer.schedule(timerTask, 100); 
       } 

      } 
      else if(event.getAction() == MotionEvent.ACTION_UP) { 
       v.setScaleX(1); 
       v.setScaleY(1); 
      } 

      return false; 
     } 
    }); 

Und ist es eine Möglichkeit, das Ganze mit xml (ziehbar und Animationen) zu tun?

+0

[hier] (http://www.tutorialspoint.com/android/android_animations.htm) ist ein sehr gutes Beispiel für das, was Sie erreichen wollen. Anstatt der Bildansicht im Tutorial können Sie Ihre Schaltfläche animieren. – chejaras

Antwort

4

Versuchen Sie Folgendes:

@Override 
public boolean onTouch(View v, MotionEvent motionEvent) { 
    int action = motionEvent.getAction(); 
    if (action == MotionEvent.ACTION_DOWN) { 
     v.animate().scaleXBy(100f).setDuration(5000).start(); 
     v.animate().scaleYBy(100f).setDuration(5000).start(); 
     return true; 
    } else if (action == MotionEvent.ACTION_UP) { 
     v.animate().cancel(); 
     v.animate().scaleX(1f).setDuration(1000).start(); 
     v.animate().scaleY(1f).setDuration(1000).start(); 
     return true; 
    } 

    return false; 
} 

Diese den Trick tun sollten;)

+0

das funktioniert ok, aber Sie müssen Ihren Finger bewegen, während Sie die Taste berühren, um die Größe zu erhöhen. – Maik

+0

Ich habe meine Antwort bearbeitet. Probieren Sie es aus und lassen Sie es mich wissen, wenn es das ist, wonach Sie suchen. –

+0

Da gehen wir, das ist es! – Maik