使用支持v4的Android Activity过渡到最新的Android L [英] Android Activity transitions using Support v4 up to date with Android L

查看:78
本文介绍了使用支持v4的Android Activity过渡到最新的Android L的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I was implementing material design for my app. I saw that it is possible to make transitions between activities just here: http://android-developers.blogspot.com.es/2014/10/implementing-material-design-in-your.html

因此,我尝试遵循真实动作"部分的内容:

So i tried to follow what "Authentic motion" section says:

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活动过渡,并且我看不到动画.

However, this seems to make the default android activity transition, and I see no animations.

请记住,我在这里说了

Keep in mind that I called requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS) as it says here http://developer.android.com/reference/android/support/v4/app/ActivityOptionsCompat.html#makeSceneTransitionAnimation(android.app.Activity, android.view.View, java.lang.String)

所有这些均已通过Nexus4 API级别19进行了测试

Also all this was tested with a Nexus4 API Level 19

问题出在哪里?

推荐答案

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

ActivityOptionsCompat.makeSceneTransitionAnimation works only on api level >= 21. From docs:

一些材料设计功能,例如材料主题和自定义 活动过渡仅在Android 5.0(API级别21)上可用 以上.但是,您可以设计自己的应用程序以利用这些 在支持材料设计和支持的设备上运行时的功能 仍与运行Android早期版本的设备兼容.

Some material design features like the material theme and custom activity transitions are only available on Android 5.0 (API level 21) and above. However, you can design your apps to make use of these features when running on devices that support material design and still be compatible with devices running previous releases of 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();
}

那为什么支持包中存在该方法?

So why does that method exist in support package?

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

It is done so in order to maintain backward compatibility with older versions (api level <=20). From maintaining compatibility docs:

// 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
}

这篇关于使用支持v4的Android Activity过渡到最新的Android L的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆