Nous y voilà: deux activités avec une transition d'élément partagé (bouton). Le deuxième Activity
a une TextInputLayout
avec un soupçon:Problème de transition de l'élément partagé TextInputLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="GO"
android:transitionName="test"/>
<android.support.design.widget.TextInputLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="WTF?!">
<android.support.design.widget.TextInputEditText android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
L'entrer dans la transition de la deuxième Activity
est retardée pour clarifier le problème: l'indice du TextInputLayout
ignore l'animation de transition et affiché immédiatement après la transition commence. À la fin de l'animation, vous pouvez voir l'arrière-plan EditText correctement animé (ligne horizontale) sous l'indice. Est-ce un bug ou est-ce que je manque quelque chose? Voici la deuxième Activity
:
public class SecondActivity extends AppCompatActivity {
public static void launch(Activity activity, View sharedElement) {
Intent intent = new Intent(activity, SecondActivity.class);
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(activity, sharedElement, "test");
activity.startActivity(intent, options.toBundle());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setEnterTransition(new Slide().setDuration(5000));
}
}
}
EDIT: Ce bug peut être « fixe » en ajoutant un arrière-plan de la mise en page de la deuxième activité.
Quel est votre élément partagé? Qu'attendez-vous qu'il se passe? – azizbekian
L'élément partagé est le bouton, comme vous pouvez le voir dans l'exemple de code. L'attente est, que l'indice de TextInputLayout est correctement animé comme une partie de la transition d'activité, comme le reste de la vue (regardez la transition appropriée de l'arrière-plan EditText dans la vidéo). – artkoenig
S'il vous plaît, clarifiez votre question. Votre GIF animé a l'air bien, nous l'avons. C'est une animation plutôt cool. Mais je ne peux pas comprendre, quel est le problème? où est-ce? Ce que je vois si la ligne bleue remonte. C'est tout. Et puis une courte ligne clignote sous le champ de saisie. Est-ce prévu? Est-ce que ce n'est pas prévu? Wtf? – babay