Что я хочу делать:Объединение Трансаляции + Переход к анимации активности
Допустим, у меня есть изображение в правом верхнем углу экрана.
A. Когда я нажимаю на него он будет двигаться/перевести в центр экрана
B. Затем он должен оживить в новую деятельность, используя SharedElement Переход
Я могу сделать с помощью LINK и B с использованием LINK
2 Вопросы
Могу ли я делать это правильно
Как я совмещаю А и В
После ответов Джорджа
v21/themes.xml
<resources>
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementExitTransition">@transition/exit_slide_transition</item>
<item name="android:windowSharedElementEnterTransition">@transition/enter_transition</item>
</style>
</resources>
exit_slide_transition.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds
android:duration="1000"
android:interpolator="@android:anim/linear_interpolator"/>
</transitionSet>
linear.xml (используется AnimationUtils.loadAnimation)
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromYDelta="0"
android:toYDelta="45%p"
android:fromXDelta="0"
android:toXDelta="45%p"
android:duration="1000"/>
</set>
enter_transition.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform/>
</transitionSet>
Начало деятельности + moveImage():
//StartActivity:
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(
activity, transitionView, EXTRA_IMAGE);
Intent intent = new Intent(activity, DetailActivity.class);
intent.putExtra(EXTRA_IMAGE, url);
ActivityCompat.startActivity(activity, intent, options.toBundle());
//moveImage():
RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams((int)getResources().getDimension(R.dimen.my_image_dp),(int)getResources().getDimension(R.dimen.my_image_dp));
layoutParams.addRule(RelativeLayout.CENTER_VERTICAL,RelativeLayout.TRUE);
layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);
imageView.setLayoutParams(layoutParams);
SharedElementExitTransition !! что делает полный смысл, спасибо, попробуем это –
, можете ли вы проверить мой обновленный вопрос, теперь я получаю ** RuntimeException: Неизвестное имя интерполятора: set ** –
Интерполятор, на который ссылаются в changeBounds, должен быть @android: anim/linear_interpolator. linear.xml (ссылка в интерполяторе changeBounds) действует как AnimationSet, а не интерполятор. –