1

我一直在尝试在 Lollipop 上共享元素转换。我有一个 recyclerview 可以加载一些卡片,然后单击卡片会在下一个活动中展开到其详细信息。

我在卡片上设置了涟漪效果和 StateListAnimator。但是这些是不可见的,因为过渡在这些效果完成之前就开始了。

有什么方法可以延迟过渡,以便它可以等待状态列表动画师和涟漪完成?

这是我使用的代码

ActivityOptions options = null;
        if (Utilities.isLollipop()) {
            options = ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(view, "hero_view"), Pair.create((View) fab, "fab"));
 startActivity(detailIntent, options.toBundle());
        }

提前致谢

4

2 回答 2

0

我最终使用了一种解决方法,但我仍然想知道这样做的正确方法是什么,因此问题悬而未决。

我所做的工作是 1. 删除状态列表动画器并将其添加为 onclick 方法中的动画器。2. 使用 Handler 发布对活动的延迟调用

new Handler().postDelayed(new Runnable() {
                      @Override
                      public void run() {

                          Intent i=new Intent(SearxhJobs.this,JobsTypes.class);
                          startActivity(i);
                      }
                  }, 200);

PS-我最终删除了效果,因为它不是很直观。

于 2015-03-25T03:50:36.400 回答
0

可以帮助一些已经在第二个活动中设置转换的方式:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().getSharedElementEnterTransition().setDuration(500);
    getWindow().getSharedElementReturnTransition().setDuration(500)
        .setInterpolator(new DecelerateInterpolator());
}
于 2017-06-15T11:09:26.807 回答