アプリのマテリアルデザインを実装していました。ここだけでアクティビティ間を移行できることがわかりました: 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=アクティビティが遷移し、アニメーションは表示されません。
ここで言うように、私はrequestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS)を呼び出したことに注意してください http://developer.Android.com/reference/Android/support/v4/app/ActivityOptionsCompat.html#makeSceneTransitionAnimation(Android.app。アクティビティ 、Android.view.View、Java.lang.String)
また、これはすべてNexus4 APIレベル19でテストされました
問題はどこだ?
ActivityOptionsCompat.makeSceneTransitionAnimation
は、APIレベル> = 21でのみ機能します。From docs :
マテリアルテーマやカスタムアクティビティの遷移など、一部のマテリアルデザイン機能はAndroid 5.0(APIレベル21)以上でのみ利用できます。ただし、実行時にこれらの機能を利用するようにアプリをデザインできます。マテリアルデザインをサポートし、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以下を実行している場合は何もしません。