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

Java 活动/片段转换是否与棒棒糖前设备兼容?,java,android,material-design,activity-transition,shared-element-transition,Java,Android,Material Design,Activity Transition,Shared Element Transition,我正在尝试在一个预棒棒糖设备(4.x)上使用共享元素进行活动转换。可能吗?到目前为止,我正在尝试: public class RewardDetail extends ActionBarActivity { @Override public void onCreate(final Bundle savedInstanceState) { ... ViewCompat.setTransitionName(imageView, TRANSITION_

我正在尝试在一个预棒棒糖设备(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);
}
但它会导致“常规”转换(没有共享元素)。有什么想法吗

编辑

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


有没有一个库已经为pre-Lollipop实现了这个功能?

没有,pre-Lollipop设备上不可能进行活动/片段转换。根据报告:

如果可能,使用其他启动信息启动活动

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


另请参见George Mount对的回答。

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

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

尽管在棒棒糖制作之前,花式棒棒糖活动/片段转换不可用(无需使用第三方库),但您仍然可以覆盖用于在活动之间转换的动画

在开始调用startActivity()之前/之后,可以调用[Activity.overridePendingTransition](,int))。离开活动时,调用相同的方法

类似地,您可以使用ActivityOptions Compat定义要在转换期间使用的自定义动画

ActivityOptionsCompat opts =
    ActivityOptionsCompat.makeCustomAnimation(getActivity(), R.anim.in, R.anim.out);
startActivity(intent, opts.toBundle());

有一个支持库,但它不支持5.0以下Android版本的(所有)转换。但也有一些替代方案:

非官方兼容性库


Android KitKat
和 在SDK示例文件夹中找到示例


在此问题的重复部分前面已发布:

如果您正在寻找一种在棒棒糖制作前完成此操作的方法,您可以使用此视频作为示例:(注意,它需要更多的工作才能实现).支持库24.2.0中有一个很有希望的更新-使用android.Support.transition包,但它是仅用于视图级别的后端口API!所以如果活动/片段转换只在棒棒糖中可能,这是否意味着一些谷歌应用程序使用更复杂的方法(如你在问题评论中所提供的)来实现转换?我真的很好奇Google calendar和Keep是如何在较低版本中工作的。Google calendar和Google Keep可能已经实现了自己的自定义库来实现这一点。。。没有支持棒棒糖前设备的官方API。您可以尝试自己实现一些东西,但Google没有提供向后兼容的库。您文章中的链接被替换的原因如下:。