Answers:
从API 16开始,您可以在调用Context.startActivity(Intent,Bundle)或相关方法时提供活动选项包。它是通过ActivityOptions构建器创建的:
Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options =
ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());
如果您正在使用支持库,请不要忘记查看ActivityOptions构建器和ActivityOptionsCompat的其他方法。
API 5+:
对于定位API级别5+的应用程序,有“活动” overridePendingTransition
方法。它为传入和传出的动画使用两个资源ID。的ID 0
将禁用动画。通话后立即startActivity
致电。
即:
startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
API 3+:
您可以使用 Intent.FLAG_ACTIVITY_NO_ANIMATION
意图标记。
即:
Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);
然后只需在“活动”中指定自己的动画即可。
这也适用于1.5 API(第3级)。
R.anim.fade_in
仍然是一个XML文件,动画中,我们假设有在res\anim
?
您必须使用OverridePendingTransition方法来实现它,该方法在Activity类中。apidemos示例的res / anim文件夹中的示例动画。核实。以上为您在演示ApiDemos /应用/活动/动画。
例:
@Override
public void onResume(){
// TODO LC: preliminary support for views transitions
this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}
super.onResume();
,得到的是:“ android.util.SuperNotCalledException:活动{com.abc.MyActivity}没有调用到super.onResume()”
Jelly Bean通过ActivityOptions.makeCustomAnimation()方法添加了对此的支持。当然,由于它仅在Jelly Bean上使用,因此出于实际目的几乎一文不值。
ActivityOptionsCompat
如果您定位pre-JellyBean,请使用。