Warum ist nicht die Möglichkeit, die Arbeit zu aktivieren, nachdem eine Ansicht animiert wurde?

Warum wird der Text nicht unsichtbar?

Hier ist mein Layout xml:

  • Verwenden von Retrofit in Android
  • Wie Download-Datei mit Service in Android?
  • Überprüfen Sie, ob der richtige Google Play Service verfügbar ist: "Leider hat die Anwendung nicht mehr funktioniert"
  • Wie benutzt man die Android Volley API?
  • Pre-guess Größe von Bitmap aus der tatsächlichen Uri, vor Skalierung
  • In-App-Abrechnung android return Authentifizierung ist erforderlich, wenn Sie versuchen, das Produkt zu abonnieren
  • <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tvRotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Rotate Me" /> </LinearLayout> 

    ..und hier ist meine tätigkeit:

     public class RotateMeActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tvRotate = (TextView) findViewById(R.id.tvRotate); RotateAnimation r = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); r.setDuration(0); r.setFillAfter(true); tvRotate.startAnimation(r); tvRotate.setVisibility(View.INVISIBLE); } } 

    Mein Ziel ist es, eine Ansicht zu drehen und dann in der Lage zu verstecken und zeigen sie in Code durch Festlegung setVisibility. Die folgenden Arbeiten, aber setRotation ist nur in API Level 11 verfügbar. Ich brauche eine Möglichkeit, es in API Level 10 zu tun.

     tvRotate.setRotation(180);//instead of the RotateAnimation, only works in API Level 11 tvRotate.setVisibility(View.INVISIBLE); 

  • Ändern der Navigation Schublade Symbol auf Aktionsleiste Android
  • NameValuePair veraltet
  • Was genau bedeutet Resources $ NotFoundException bedeutet?
  • Holen Sie sich die Liste der Kontrollkästchen von recyclerview android
  • Android Horizontale Scrolling Bildergalerie
  • CoordinatorLayout Toolbar unsichtbar auf enter bis volle Höhe
  • 6 Solutions collect form web for “Warum ist nicht die Möglichkeit, die Arbeit zu aktivieren, nachdem eine Ansicht animiert wurde?”

    Für mich rufen clearAnimation der Ansicht das Problem auf. In meinem Fall wollte ich den Blick zurück in seine ursprüngliche Position setzen, nachdem ich eine Übersetzung mit fillAfter auf true gesetzt hatte.

    Alle Animationen (vor Android 3.0) sind tatsächlich auf eine Bitmap angewendet, die eine Momentaufnahme Ihrer Ansicht statt auf Ihrer ursprünglichen Ansicht ist. Wenn du die Füllung nach wahr stellst, bedeutet das eigentlich, dass die Bitmap weiterhin auf dem Bildschirm statt deiner Ansicht angezeigt wird. Dies ist der Grund, warum sich die Sichtbarkeit bei der Verwendung von setVisibility nicht ändern wird und auch der Grund, warum Ihre Ansicht keine Touch-Events in ihren neuen (gedrehten) Grenzen erhält. (Aber da du auf 180 Grad drehst, ist das kein Problem).

    Ein weiterer Weg, um dies zu umgehen ist, um Ihre animierte Ansicht in einer anderen Ansicht zu wickeln und die Sichtbarkeit dieser Wrapper-Ansicht festzulegen.

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/animationHoldingFrame" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tvRotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Rotate Me" /> </FrameLayout> </LinearLayout> 

    Und der Code wird dann so:

     TextView tvRotate = (TextView) findViewById(R.id.tvRotate); FrameLayout animationContainer = (FrameLayout)findViewById(R.id.animationHoldingFrame) RotateAnimation r = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); r.setDuration(0); r.setFillAfter(true); tvRotate.startAnimation(r); animationContainer.setVisibility(View.INVISIBLE); 

    Verwenden Sie diese vor der Einstellung, nachdem die Animation abgeschlossen ist:

     anim.reverse(); anim.removeAllListeners(); anim.end(); anim.cancel(); 

    Wo anim Ihr ObjectAnimator ist

    Aber wenn du die Animationsklasse benutzt hast, dann mach einfach mal:

     view.clearAnimation(); 

    Auf die Ansicht, auf der die Animation durchgeführt wurde

    Ich habe damit die API Level 11 und die Verwendung von setRotation, um dies zu erreichen. Dies scheint wie eine ziemlich einfache Anforderung, die nicht getan werden kann Pre-Honeycomb though. Alles, was ich tun wollte, war, einen Knopf zu drehen und dann zu verstecken / zu zeigen.

    Ich kam mit einem Workaround für dieses: Grundsätzlich richtig, bevor du setVisibility nennst (View.GONE), mache eine Animation mit Dauer = 0 setFillAfter (false) und hast den Winkel von / auf den aktuellen Drehwinkel zu setzen.

    Dadurch wird die setFillAfter-Bitmap gelöscht und die Ansicht verschoben.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.