Android活动使用支持v4与Android L进行了更新

我正在为我的应用程序实施材料devise。 我看到有可能在这些活动之间进行转换: http : //android-developers.blogspot.com.es/2014/10/implementing-material-design-in-your.html

所以我试图按照“真实的运动”部分说:

ActivityMain.java

Intent intent = new Intent(); String transitionName = getString(R.string.transition_album_cover); … ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, albumCoverImageView, // The view which starts the transition transitionName // The transitionName of the view we're transitioning to ); ActivityCompat.startActivity(activity, intent, options.toBundle()); 

activity_main.xml中

 <ImageView … android:transitionName="@string/transition_album_cover" /> 

activity_details.xml

 <ImageView … android:transitionName="@string/transition_album_cover" /> 

但是,这似乎使默认的Android活动转换,我看不到animation

请记住,我调用requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS),因为它在这里说: http : //developer.android.com/reference/android/support/v4/app/ActivityOptionsCompat.html#makeSceneTransitionAnimation (android.app.Activity,android。 view.View,java.lang.String)

而且所有这些都是在Nexus4 API Level 19上testing的

哪里有问题?

ActivityOptionsCompat.makeSceneTransitionAnimation仅适用于api级别> = 21。从文档 :

一些材料devisefunction(如材质主题和自定义活动转换)仅在Android 5.0(API级别21)及更高版本上可用。 但是,您可以devise应用程序,以便在支持材料devise的设备上运行时使用这些function,并仍然与运行以前版本的Android的设备兼容。

这是定义:

 public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName) { if (Build.VERSION.SDK_INT >= 21) { return new ActivityOptionsCompat.ActivityOptionsImpl21( ActivityOptionsCompat21.makeSceneTransitionAnimation(activity, sharedElement, sharedElementName)); } return new ActivityOptionsCompat(); } 

那么为什么这种方法存在于支持包中呢?

这样做是为了保持与旧版本(api级别<= 20)的向后兼容性。 从维护兼容性文档 :

 // Check if we're running on Android 5.0 or higher if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Call some material design APIs here } else { // Implement this feature without material design } 

活动转换仅适用于Android 5.0。 ActivityOptionsCompat. makeSceneTransitionAnimation 如果您运行的是19或更低版本, ActivityOptionsCompat. makeSceneTransitionAnimation不会执行任何操作。