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。是否需要一些额外的设置?

免责声明:我在棒棒糖运行设备上测试它

4

1 回答 1

0

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

于 2015-10-19T08:42:34.280 回答