[android] Android에서 다른 활동을 호출 할 때 애니메이션을 제공하는 방법은 무엇입니까?

두 개의 활동 A와 B가 있습니다. 활동 A가 B를 호출 할 때 애니메이션 축소를 원하고 활동 B가 A를 호출 할 때 애니메이션을 최대화하고 싶습니다.이를 위해 애니메이션 xml 파일이 필요하지 않습니다.

Android에서 다른 Activity를 호출하면 기본 애니메이션이 제공되고 축소 애니메이션이 호출됩니다.

내가 원하는 것은 기본 애니메이션이 발생하지 않아야하고 내가 원하는 애니메이션이 발생해야한다는 것입니다.

다른 Activity를 호출 할 때 실제로 애니메이션을 줄 수 있습니까?



답변

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)에서도 작동합니다.


답변

이를 위해서는 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);
}


답변

활동의 안팎을 애니메이션 할 수 있도록 튜토리얼을 작성했습니다.

즐겨:

http://blog.blundellapps.com/animate-an-activity/


답변

Jelly Bean은 ActivityOptions.makeCustomAnimation () 메소드로 이를 지원합니다 . 물론 Jelly Bean에만 있기 때문에 실용적인 목적으로는 거의 쓸모가 없습니다.


답변