답변:
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
?
이를 위해서는 Activity 클래스 에있는 OverridePendingTransition 메서드를 사용해야합니다 . apidemos 예제의 res / anim 폴더에있는 샘플 애니메이션. 확인해 봐. ApiDemos / App / Activity / animation 에서 데모를 확인하는 것 이상 입니다.
예:
@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 : Activity {com.abc.MyActivity}가 super.onResume ()을 호출하지 않았습니다."
Jelly Bean은 ActivityOptions.makeCustomAnimation () 메소드로 이를 지원합니다 . 물론 Jelly Bean에만 있기 때문에 실용적인 목적으로는 거의 쓸모가 없습니다.
ActivityOptionsCompat
Pre-JellyBean을 대상으로하는 경우 사용하십시오 .