活动/片段转换是否与前棒棒糖设备兼容?

我正在尝试使用前棒棒糖设备(4.x)上的共享元素进行活动过渡。可能吗?到目前为止,我正在尝试这个:

public class RewardDetail extends ActionBarActivity {
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        ...

        ViewCompat.setTransitionName(imageView, TRANSITION_NAME);
    }

    ...

    public static void launch(ActionBarActivity activity, View transitionView, WelcomeReward detailData) {
        ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, TRANSITION_NAME);
        Intent intent = new Intent(activity, RewardDetail.class);
        intent.putExtra(PARAM_DATA, detailData);
        ActivityCompat.startActivity(activity, intent, options.toBundle());
    }
}

调用者:

@Override
public void onClick(final View v) {
    int position = recyclerView.getChildPosition(v);
    WelcomeReward welcomeReward = data.get(position);
    RewardDetail.launch(WelcomeRewardActivity.this, v.findViewById(R.id.reward_view), welcomeReward);
}

但它会导致“常规”转换(没有共享元素)。有什么想法吗?

编辑

根据这个视频,它可以做到:

https://www.youtube.com/watch?v=RhiPJByIMrM&index=8&list=WL

有没有一个库已经为前棒棒糖实现了这一点?


答案 1

不可以,活动/片段转换在棒棒糖之前的设备上是不可能的。根据文档

如果可以,请使用其他启动信息启动活动。

在 Android 4.1+ 中引入了其他选项,以便更好地控制活动启动动画。应用程序可以使用此方法以及 ActivityOptionsCompat 来使用这些动画(如果可用)。在不存在此功能的平台版本上运行时,活动将正常启动。

另请参阅George Mount对StackOverflow问题的回答


答案 2

您可以查看此库,了解前棒棒糖设备的活动和片段过渡

dependencies {
        compile 'com.albinmathew:PreLollipopTransition:1.1.2'
}

https://github.com/albinmathew/PreLollipopTransition


推荐