我试图在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之前使用了什么方法......我们将非常感谢任何帮助......
谢谢
答案 0 :(得分:0)
正如您所发现的那样,直到API级别16才添加ActivityOptions
,并且Android Support Library中没有提供任何等效内容。
所以,你有两个选择:
继续定位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警告,您可以添加注释以忽略错误。
如果您必须定位SDK的第12版,那么您仍然可以使用反射在较新的设备上运行这些方法。我现在不会详细说明这一点,因为它很复杂......但它仍然是一种选择。
希望有所帮助。
答案 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 希望它有所帮助:)