2017-04-24 4 views
2

Ich habe einen Button. Auf Knopfdruck animiere ich die TextView.Android: Klicken Ereignis wird nicht zum Zeitpunkt der Animation ausgelöst

Zum Zeitpunkt der Animation funktioniert das Klicken für texview nicht.

buttonclick.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final Animation animation = new TranslateAnimation(
        Animation.RELATIVE_TO_SELF, 1.0f, 
        Animation.RELATIVE_TO_SELF, 10.0f, 
        Animation.RELATIVE_TO_SELF, 1.0f, 
        Animation.RELATIVE_TO_SELF, 10.0f); 
      animation.setDuration(100000); 
      textView.startAnimation(animation); 
     } 
    }); 


    textView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(MainActivity.this,"Click",Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

was meinst du mit "zur zeit"? funktioniert es überhaupt nicht oder wird es mit Verzögerung animiert? – Opiatefuchs

+0

Wenn die Animation fertig ist, funktioniert der Klick nicht? –

+0

Es funktioniert vor dem Start der Animation. Aber wenn die Animation startet, funktioniert der Klick von Textview nicht. –

Antwort

1

Animation s sind nur Animieren Ansichten, nicht ändern, seine eine Illusion ... Sie verwenden TranslateAnimation, so dass Sie Ihre Ansichten "Look" bewegen, nicht die Ansicht selbst. Im Zweifelsfall können Sie setFillAfter(true) Methode verwenden, dann wird View anklickbare AFTER Animation Ende sein (aber Ihre anim ist lang/unendlich ...).

Betrachten Animator stattdessen verwenden, die "Parameter" (in Ihrem Fall reale Position) Sicht mit jedem Rahmen von Anim

ObjectAnimator animX = ObjectAnimator.ofFloat(textView, "x", newx); 
ObjectAnimator animY = ObjectAnimator.ofFloat(textView, "y", newy); 
AnimatorSet animSetXY = new AnimatorSet(); 
animSetXY.playTogether(animX, animY); 
animSetXY.start(); 
+0

Ist es möglich, auf die Ansicht zu klicken, wenn die Animation läuft? –

+0

Nein, wenn Sie animieren, dann ändern Sie nur das Aussehen dieses Elements. es ist immer noch anklickbar, wo es beim Start hinzugefügt wurde, nicht dort, wo das "Aussehen" gezeichnet wird (animiert und irgendwo anders auf dem Bildschirm platziert). Dies ist der Hauptunterschied zwischen 'Animation' und' Animator' - in vielen Fällen braucht man nur kurze anim Ansicht ohne Interaktion (überhaupt oder zumindest während Anim) und zu diesem Zweck ist 'Animation' (effizienter als' Animator' - nicht "echte" Attribute von "View" ändern, einfach "Bitmap" von 'View' zeichnen/ändern, ohne alle' View's im Layout neu zu vermessen. – snachmsm

+0

Es funktioniert jetzt. –

0

versuchen, diese

PropertyValuesHolder x = PropertyValuesHolder.ofFloat("x", 50f); 
PropertyValuesHolder y = PropertyValuesHolder.ofFloat("y", 100f); 
ObjectAnimator.ofPropertyValuesHolder(mTextView, x, y).start(); 

auf diese Weise ändert, können Sie animiere das gesamte Ansichtsobjekt - nicht nur den Inhalt.

Verwandte Themen