Voir animé derrière une autre disposition

J'essaie d'animer une vue sur une autre mise en page, mais j'ai eu un problème, car mon point de vue est derrière la mise en page. J'ai essayé de mettre android:animateLayoutChanges="true" , mais sans succès.
Mon code:
Layout.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:animateLayoutChanges="true"> <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New RadioButton" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" android:animateLayoutChanges="true" android:background="#ffffff"> </LinearLayout> </RelativeLayout> 

Ma classe activicty:

  • Comment puis-je appeler getContentResolver dans Android?
  • Ressources compilées par Android - resources.arsc
  • Débogage à distance avec émulateur Android
  • Continuer le service même si l'application est effacée de l'application récente
  • La sélection de WebView provoque le cache du clavier mobile temporairement puis revenir
  • Android: Appcompat 21 comment ajouter des ombres sur la barre d'action
  •  public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onWindowFocusChanged(boolean hasFocus) { float x = 300; float y = 300; RadioButton button = (RadioButton) findViewById(R.id.radioButton); button.animate().setDuration(10000).x(x).y(y); } } 

  • Google Maps dans Android: Impossible de trouver le style 'mapViewStyle' dans le thème actuel
  • Mettre à jour GridView / ListView sans re-peuplement
  • Combien de numéro de port que l'Android et le iOS ont-ils?
  • Facebook Share From Mobile Web to Native App Sans Javascript?
  • Vous devez utiliser un thème Theme.AppCompat (ou descendant) avec cette activité. Modifier vers Theme.AppCompat provoque une autre erreur
  • Firebase déclenche trop d'alarmes
  • 6 Solutions collect form web for “Voir animé derrière une autre disposition”

    Les éléments seront dessinés dans le même ordre qu'ils sont commandés dans la mise en page. Pour votre mise en page, le RadioButton sera dessiné d'abord, puis LinearLayout. S'ils se chevauchent, LinearLayout sera dessiné sur RadioButton.

    Solution n ° 1: renversez l'ordre de RadioButton et LinearLayout afin que le RadioButton soit toujours défini en dernier.

     <RelativeLayout android:id="@+id/final_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="30dp" android:background="#ffffff"> </RelativeLayout> <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New RadioButton" /> 

    Une explication plus rigoureuse sur le site du développeur Android .

    Solution n ° 2: Non relié au point ci-dessus, mais probablement aussi important, vous devez démarrer l'animateur. Source mise à jour ci-dessous:

     public class MainActivity extends AppCompatActivity { private RadioButton mRadioButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRadioButton = (RadioButton) findViewById(R.id.radioButton); } @Override public void onWindowFocusChanged(boolean hasFocus) { float x = 300; float y = 300; ViewPropertyAnimator animator = mRadioButton.animate().setDuration(10000).x(x).y(y); animator.setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { Log.d(TAG, "onAnimationEnd"); } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }) animator.start(); } private static final String TAG = MainActivity.class.getSimpleName(); } 

    Testé, anime le démarrage de l'application dans Android 5.1.

    Il suffit de donner à toute la propriété de l'élément de disposition xml comme android:clipChildren="false" & android:clipToPadding="false" . Et ne pas oublier de faire animatedView.bringToFront()

    Ont le même problème avant le mois et ont trouvé une solution après avoir travaillé plusieurs jours. Trouve moi. ici

    Permettez-moi de vous fournir la solution par rapport à l'écran mdpi 480X854 pixels

    Écran pixel 480X854

    Scénario 1: Vous souhaitez que RadioButton franchisse le LinearLayout avec RelativeLayout en tant que groupe de vues parent que vous devez réparer votre commande z. Effectuez les modifications comme ci-dessous. L'animation commence du point A (0,0) au point C (300 300) ) Sur le RelativeLayout.

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" android:background="#ffffff"> </LinearLayout> <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New RadioButton" /> </RelativeLayout> 

    Scénario 2: Vous souhaitez que RadioButton anime sur LinearLayout avec LinearLayout en tant que groupe de vues parent que vous devez configurer la mise en page ci-dessous. L'animation commence à partir du point B (20,20) (selon la valeur layout_margin ) au point D (320,320) par rapport au RelativeLayout.

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" android:background="#ffffff"> <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New RadioButton" /> </LinearLayout> </RelativeLayout> 

    Scénario 3: Vous souhaitez que RadioButton anime dans LinearLayout avec LinearLayout en tant que groupe de vues parent et que votre valeur x ou y dépasse la taille des limites LinearLayout dans l'une ou l'autre direction, par exemple x = 800> 480 pixels OU Y = 1200> 854 pixels

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" <!-- Allow all the children to go out of their parent boundaries --> android:clipChildren="false" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" <!-- Allow all the children to go out of their parent boundaries --> android:clipChildren="false" <!-- Do not clip the children at the padding ie allow to children go beyond the padding --> android:clipToPadding="false" android:background="#ffffff"> <RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New RadioButton" /> </LinearLayout> </RelativeLayout> 

    J'espère que ça aide …
    Happy Coding …

    Je ne suis pas sûr de ce que vous essayez d'atteindre, mais si vous déplacez un enfant, vous devez désactiver les clipToChilder et clipToPadding sur le conteneur afin de voir l'enfant se déplacer en dehors du parent:

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" android:clipToPadding="false"> ... </RelativeLayout> 

    Quoi qu'il en soit, si vous rencontrez un problème de commande z sur certaines vues, vous pouvez utiliser la méthode bringToFront() ; dans ton cas:

      final RadioButton button = (RadioButton) findViewById(R.id.radioButton); button.animate().setDuration(10000).x(x).y(y).setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationEnd(Animator animator) { button.bringToFront(); } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); 

    D'après le commentaire de monsieur Karaokyo auquel vous avez répondu, je suggère que c'est ce que vous voulez

     RadioButton r1; // suppose you already referenced it LinearLayout l1; // // Animation anim = AnimationUtils.loadAnimation(getBaseContext(), R.anim.abc_slide_in_top); // the R.anim. blah blah is the preferred animation you want //when the time comes if(r1.getParent() != null) ((ViewGroup)r1.getParent()).removeView(r1); l1.addView(r1); r1.startAnimation(anim); // you can create an animation listener and add the view when the animation //starts 

    La capture ici est, il ressemblera à la façon dont vous le vouliez.

    La solution la plus simple est de réessayer dans xml afin que RadioButton soit affiché après LinearLayout.

    Appelez bringchildTofront (yourradiobutton) avant de lancer l'animation ou Si vous souhaitez plus de contrôle sur le tirage, Extend RelativeLayout et override

     protected int getChildDrawingOrder (int childCount, int i) 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.