Анимация перехода активности в ListView в Android Lollipop с Material Design
Я использую шаблон Master/Detail и в настоящее время перехожу на Android Lollipop. Я хочу получить одно из новых переходов активности, если я нажму на элемент в моем ListView. Анимации работают, но я не знаю, как сделать определенную анимацию между общим элементом (в моем случае ImageView).
Если я нажму на строку в моем пользовательском ListView (с изображением и текстом), переход должен переключиться на изображение в моем DetailActivtiy. Это должно выглядеть в этом видео: http://youtu.be/RhiPJByIMrM?t=2m41s или в этом видео: http://youtu.be/XkWI1FKKrs4
Я уже добавил этот код в оба моих ImageViews:
<ImageView
android:transitionName="@string/transition_title_image"/>
Мой список действий:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= 21) {
//To enable window content transitions in your code instead, call the Window.requestFeature() method:
getWindow().requestFeature(android.view.Window.FEATURE_CONTENT_TRANSITIONS);
Transition ts_enter = new Slide(); //Slide(); //Explode();
Transition ts_exit = new Explode();
ts_enter.setDuration(2000);
ts_exit.setDuration(2000);
/*
If you have set an enter transition for the second activity,
the transition is also activated when the activity starts.
*/
getWindow().setEnterTransition(ts_enter);
getWindow().setExitTransition(ts_exit);
}
super.onCreate(savedInstanceState);
Используя этот метод для вызова моего DetailActivity:
if (Build.VERSION.SDK_INT >= 21) {
Intent intent = new Intent(ArticleListActivity.this, ArticleDetailActivity.class);
intent.putExtra("pos", id);
intent.putExtra("articleList", articleList);
String transitionName = getString(R.string.transition_title_image);
ImageView article_thumb = (ImageView) findViewById(R.id.article_thumb);
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(ArticleListActivity.this,
article_thumb, // The view which starts the transition
transitionName // The transitionName of the view we’re transitioning to
);
ActivityCompat.startActivity(ArticleListActivity.this, intent, options.toBundle());
}
Моя детальДеятельность:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= 21) {
//To enable window content transitions in your code instead, call the Window.requestFeature() method:
getWindow().requestFeature(android.view.Window.FEATURE_CONTENT_TRANSITIONS);
Transition ts_enter = new Slide(); //Slide(); //Explode();
Transition ts_exit = new Explode(); //Slide(); //Explode();
ts_enter.setDuration(2000);
ts_exit.setDuration(2000);
getWindow().setEnterTransition(ts_enter);
getWindow().setExitTransition(ts_exit);
}
super.onCreate(savedInstanceState)
;
1 ответ
Попробуй это:
Во-первых, убедитесь, что вы даете каждому
ImageView
в вашей первой деятельности уникальное имя перехода. Если все виды изображений имеют одно и то же имя перехода, среда не будет знать, какой из них выбрать, когда анимация начнется, и переход не будет работать должным образом.Когда
ImageView
щелкнуть, передать свое уникальное имя перехода в детали деятельности какIntent
дополнительно.В деталях активности
onCreate()
метод, получить имя из набора намерений и установить его в качествеImageView
переходное имя.