0

我试图在 android studio 中将我的项目构建目标从 4.1 更改为 3.1。

    <uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="16" />

    <uses-sdk
    android:minSdkVersion="12"
    android:targetSdkVersion="12" />

在我的项目结构中,我将 SDKs Build 目标更改为 Android 3.1。当我尝试在 3.1 的 AVD 设置中运行该项目时,我得到的项目与 AVD 不兼容。

我在代码中遇到的主要错误是:

    Bundle bundle_animation = ActivityOptions.makeCustomAnimation(
            MainActivity.this, R.anim.animation, R.anim.animation2).toBundle();
    startActivity(startNewGame, bundle_animation);

我知道直到 4.1 才引入 makeCustomAnimation...但是我该如何解决这个问题...我可以从 4.1 添加类并将其添加到 3.1sdk 吗?或者在 ActivityOptions.makeCustomAnimation 之前使用了什么方法...任何帮助将不胜感激...

谢谢

4

2 回答 2

0

使用它让新活动(DetailActivity.class)从当前活动的左侧进入。

喜欢:https ://www.youtube.com/watch?v=EzgGGWpRES0

Intent i = new Intent(MyApplication.getContext(), DetailActivity.class);
startActivity(i);
getActivity().overridePendingTransition(R.anim.activtiy_pet_detail_right_slide_in, R.anim.activtiy_pet_detail_left_slide_out);

代替:

Bundle bundle_animation = ActivityOptions.makeCustomAnimation(
            MainActivity.this, R.anim.animation, R.anim.animation2).toBundle();
    startActivity(startNewGame, bundle_animation);

它适用于 < 16 API 希望它有所帮助:)

于 2014-09-11T06:54:43.930 回答
0

正如您所发现的,ActivityOptions直到 API 级别 16 才添加,并且Android 支持库中没有提供任何等效项。

所以,你有两个选择:

  1. 继续以 SDK 的 16 版本为目标,只需将其更改minSdkVersion为 12。然后您可以使用 if 语句检查应用程序是否在运行时运行具有ActivtyOptions该类的版本。例如

    if (android.os.Build.VERSION.SDK_INT >= 16) {
        // Start activity with a custom animation
        Bundle bundle_animation = ActivityOptions.makeCustomAnimation(MainActivity.this, R.anim.animation, R.anim.animation2).toBundle();
        startActivity(startNewGame, bundle_animation);
    }
    else {
        // No custom animations :(
        startActivity(startNewGame);
    }
    

    请注意,可能会收到 lint 警告,您可以添加注释以忽略错误。

  2. 如果您必须以 SDK 的 12 版为目标,那么您仍然可以通过使用反射在较新的设备上运行这些方法。我现在不会详细说明这一点,因为它非常复杂......但它仍然是一种选择。

希望有帮助。

于 2013-07-15T10:52:26.997 回答