Анимация перехода активности в 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 ответ

Попробуй это:

  1. Во-первых, убедитесь, что вы даете каждому ImageView в вашей первой деятельности уникальное имя перехода. Если все виды изображений имеют одно и то же имя перехода, среда не будет знать, какой из них выбрать, когда анимация начнется, и переход не будет работать должным образом.

  2. Когда ImageView щелкнуть, передать свое уникальное имя перехода в детали деятельности как Intent дополнительно.

  3. В деталях активности onCreate() метод, получить имя из набора намерений и установить его в качестве ImageViewпереходное имя.