活动/片段转换是否与pre-Lollipop设备兼容?

Che*_*rra 32 java android material-design activity-transition shared-element-transition

我正在尝试使用前Lollipop设备(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());
    }
}
Run Code Online (Sandbox Code Playgroud)

叫做:

@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);
}
Run Code Online (Sandbox Code Playgroud)

但它导致"常规"转换(没有共享元素).有任何想法吗?

编辑

根据这段视频,可以做到:

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

是否有一个图书馆已经为棒棒糖前实现了这个?

Ale*_*ood 18

不,在Lollipop之前的设备上无法进行活动/片段转换.根据文件:

如果能够,请使用其他启动信息启动活动.

在Android 4.1+中,引入了其他选项以允许更多地控制活动启动动画.应用程序可以将此方法与ActivityOptionsCompat一起使用,以便在可用时使用这些动画.在不存在此功能的平台版本上运行时,活动将正常启动.

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

  • 您的帖子中的该链接被替换的原因如下:[将帖子中常用链接缩短器的使用列入黑名单](// meta.stackoverflow.com/q/313621)。 (3认同)
  • [正在meta上进行讨论](https://meta.stackoverflow.com/q/385606/6282576) (3认同)

Alb*_*hew 8

您可以查看此库以获取棒棒糖前设备的活动和片段转换

dependencies {
        compile 'com.albinmathew:PreLollipopTransition:1.1.2'
}
Run Code Online (Sandbox Code Playgroud)

https://github.com/albinmathew/PreLollipopTransition