Android-Bild Skala Animation relativ zum Mittelpunkt

Ich habe ein ImageView und ich mache eine einfache Skala Animation dazu. Sehr Standardcode.

Meine scale_up.xml:

  • Aufgenommenes Video ist nach dem Hochladen auf das Internet um 90 Grad gedreht
  • Android-Galerie View Scrolling Problem, wenn onClickListener für Artikel gegeben
  • Dimension der weichen Tasten bar
  • Android View setPadding () vs setPaddingRelative ()
  • Execution fehlgeschlagen für Task ': app: transformClassesWithDexForDebug' bei der Implementierung von Google-Anmeldung für Android
  • Android JUnit Tests laufen nicht
  • <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="1" android:fromYScale="1" android:toXScale="1.2" android:toYScale="1.2" android:duration="175"/> </set> 

    Mein Animationscode:

     Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up); ((ImageView) findViewById(R.id.circle_image)).startAnimation(a); 

    Das Problem:

    Wenn die Bildskalen es nicht von der Mitte aus skaliert, sondern von der oberen linken Ecke aus. Mit anderen Worten, die skalierte Verion des Bildes hat nicht den gleichen Punkt wie das Zentrum, aber es hat den gleichen oberen linken Punkt. Hier ist ein Link, der erklärt, was ich meine. Das erste Bild ist, wie die Animation skaliert, und das zweite Bild ist, wie ich es skalieren möchte. Es sollte den Mittelpunkt gleich halten. Ich habe versucht, die Schwerkraft auf das Bild aufzurufen, auf dem Container, nach links oder rechts ausrichten, es skaliert immer das gleiche. Ich benutze RelativeLayout für den Hauptbildschirm und ImageView befindet sich in einem anderen RelativeLayout, aber ich habe andere Layouts probiert, keine Änderung.

  • Build-Fehler referenziert build.xml und Proguard-Datei: "null zurückgegeben: 1"
  • Warum funktioniert ImageView.setImageMatrix () nicht?
  • Android-Tests mit Appium und Gradle
  • Android: AppCompat 21, wie man das hintere Icon und das Überlaufsymbol zu einem benutzerdefinierten ändern kann?
  • Android ListView in Fragment
  • NullPointerExeption mit AppCompat BottomSheets
  • 4 Solutions collect form web for “Android-Bild Skala Animation relativ zum Mittelpunkt”

    Vergessen Sie die zusätzliche Übersetzung, set android:pivotX , android:pivotY auf die halbe Breite und Höhe und es wird von der Mitte des Bildes skalieren.

    50% ist das Zentrum der animierten Ansicht.

    50%p ist Mitte des Elternteils

     <scale android:fromXScale="1.0" android:toXScale="1.2" android:fromYScale="1.0" android:toYScale="1.2" android:pivotX="50%p" android:pivotY="50%p" android:duration="175"/> 

    Die Antwort von @stevanveltema und @JiangQi sind perfekt, aber wenn Sie Skalierung mit Code wollen, dann können Sie meine Antwort verwenden.

     // first 0f, 1f mean scaling from X-axis to X-axis, meaning scaling from 0-100% // first 0f, 1f mean scaling from Y-axis to Y-axis, meaning scaling from 0-100% // The two 0.5f mean animation will start from 50% of X-axis & 50% of Y-axis, ie from center ScaleAnimation fade_in = new ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); fade_in.setDuration(1000); // animation duration in milliseconds fade_in.setFillAfter(true); // If fillAfter is true, the transformation that this animation performed will persist when it is finished. view.startAnimation(fade_in); 

    Sie können die Translationsanimation in Ihrem Set verwenden, um das zu versetzen. Sie müssen wahrscheinlich die toXDelta und toYDelta Werte optimieren, um es richtig zu bekommen, damit es das Bild zentriert hält.

     <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="1" android:fromYScale="1" android:toXScale="1.2" android:toYScale="1.2" android:duration="175"/> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="-20%" android:toYDelta="-20%" android:duration="175"/> </set> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.