Android将构建目标从4.1更改为3.1

时间:2013-07-15 10:06:42

标签: android

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

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

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

在我的项目结构中,我将SDKs Build target更改为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);

我知道makeCustomAnimation在4.1之前没有引入......但我怎么能解决这个问题...我可以从4.1添加类并将其添加到3.1sdk ???或者在ActivityOptions.makeCustomAnimation之前使用了什么方法......我们将非常感谢任何帮助......

谢谢

2 个答案:

答案 0 :(得分:0)

正如您所发现的那样,直到API级别16才添加ActivityOptions,并且Android Support Library中没有提供任何等效内容。

所以,你有两个选择:

  1. 继续定位SDK的第16版,只需将minSdkVersion更改为12.然后您可以使用if语句检查应用是否正在运行具有ActivtyOptions类的版本在运行时。 e.g。

    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版,那么您仍然可以使用反射在较新的设备上运行这些方法。我现在不会详细说明这一点,因为它很复杂......但它仍然是一种选择。

  3. 希望有所帮助。

答案 1 :(得分: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);

instade of:

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

适用于&lt; 16 API 希望它有所帮助:)