监听默认活动转换

3
我正在尝试将 TransitionListener 添加到默认的活动转换中,像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().getEnterTransition().addListener(new TransitionAdapter());
    }
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private class TransitionAdapter implements Transition.TransitionListener {
    @Override
    public void onTransitionStart(Transition transition) {
        Log.i("transition", "onTransitionStart");
    }

    @Override
    public void onTransitionEnd(Transition transition) {
        Log.i("transition", "onTransitionEnd");
    }

    @Override
    public void onTransitionCancel(Transition transition) {
        Log.i("transition", "onTransitionCancel");
    }

    @Override
    public void onTransitionPause(Transition transition) {
        Log.i("transition", "onTransitionPause");
    }

    @Override
    public void onTransitionResume(Transition transition) {
        Log.i("transition", "onTransitionResume");
    }
}

这是我启动活动的方式: Intent intent = new Intent(activity, LoginActivity.class);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Bundle options = ActivityOptions.makeSceneTransitionAnimation(activity).toBundle();
        activity.startActivityForResult(intent, RequestCodes.SIGN_IN, options);
    } else {
        activity.startActivityForResult(intent, RequestCodes.SIGN_IN);
    }

问题在于真机上没有任何回调被调用。但在genymotion上是可以运行的。是否需要进行其他设置?

免责声明:我在运行lolipop设备上测试了它。


您是否正在使用ActivityOptions.makeSceneTransitionAnimation调用您的活动? - George Mount
不,我没有任何共享元素。 - Jacek Kwiecień
哇,这是一个好答案。我不知道我可以在没有共享元素的情况下使用它。Bundle options = ActivityOptions.makeSceneTransitionAnimation(activity).toBundle(); 请将其作为答案,以便我可以接受它。 - Jacek Kwiecień
原来 ActivityOptions.makeSceneTransitionAnimation(activity).toBundle() 在Genymotion上有效,但在真机上无效。 - Jacek Kwiecień
1个回答

0

发现它在5.0上不起作用,但在5.1上得到了修复,所以显然是一个Android的bug。不过我不知道有什么解决方法。我已将转换限制为最低API 22。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接