활동 종료 ()에 애니메이션을 어떻게 추가 할 수 있습니까?
내 활동이 생성되고 잘 작동 할 때 overridePendingTransition을 사용하고 있습니다. 페이드 인이 훌륭하게 작동하는 것을 볼 수 있고 활동의 마무리를 애니메이션으로 만들면 여전히 기본 오른쪽에서 슬라이드를 수행합니다.
먼저 활동을 시작할 때 다음과 같이 애니메이션을 정의 해 보았습니다.
Intent myIntent = new Intent(a, SkdyAlert.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
a.startActivity(myIntent);
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout);
}
그런 다음 활동을 마칠 때도 해보았습니다
okBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout);
}
}
});
그러나 접근 방식 방식 중 어느 것도 이탈 애니메이션의 "오른쪽에서 왼쪽으로"슬라이드를 방해하지 않습니다. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?
finish () 호출 보류중인 전환을 재정의합니다.
제 경우에는 전환을 피하기 위해 그렇게했습니다.
finish();
Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);
순서는 중요합니다 :)
finish ()를 호출하는 대신 onPause에서 애니메이션을 구성하려는 경우 Finishing () 메서드를 사용하는 것이 좋습니다.
@Override
protected void onPause() {
super.onPause();
if (isFinishing()){
overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out);
}
}
이 질문은 이미 답변 배치 활동을 종료하는 동안 애니메이션을 배치하는 가장 편리한 방법은 관련 활동의 "finish ()"메서드를 재정의하는 것입니다.
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}
finish();
overridePendingTransition(0, 0);
접근 방식을 사용하여 문제를 해결했습니다.
애니메이션으로 열기 :
Intent newUser = new Intent(getBaseContext(), NewUserActivity.class);
startActivity(newUser);
overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
애니메이션으로 닫으려면 :
@Override
public boolean onOptionsItemSelected(MenuItem item) {
onBackPressed();
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.slide_out_right,R.anim.slide_in_right);
}
주제를 통해 그것을 사용합니다. 활동 또는 전체 애플리케이션에 대한 진입 종료 애니메이션을 정의 할 수 있습니다.
@schwiz의 답변에 따라 여기에 기본 제공 대화 상자 테마에 대한 애니메이션 재정의가 있습니다. 여기서 로컬 slide_up 및 slide_down 애니메이션을 정의했습니다. 내 활동은 업그레이드가 들어오고 나가도록하기 위해 테마 MyDialog를 지정합니다.
<style name="Animation.MyDialog" parent="android:Animation.Dialog">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
<style name="Theme.MyDialog" parent="android:Theme.Dialog">
<item name="android:windowAnimationStyle">@style/Animation.MyDialog</item>
</style>
startActivityForResult를 사용하여 마이 활동을 시작하고 부모 활동의 onActivityResult ()에서 :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_YOUR_ACTIVITY) {
overridePendingTransition(R.anim.parent_appearing_anim, R.anim.child_dissmissing_anim);
}
super.onActivityResult(requestCode, resultCode, arg2);
}
if (getEnterAnimation() > -1 && getExitAnimation() > -1) {
overridePendingTransition(getEnterAnimation(), getExitAnimation());
}
이 메서드는 R.anim.YOUR_ANIMATION_XML에서 애니메이션을 반환합니다.
이 코드를 onCreate () 전에 추가하십시오.
setContentView()
그리고 전에 onPause ()에서
super.onPause()
이 메서드 앞 / 내에이 코드를 추가하려고했지만 종료 애니메이션이 작동하지 않았습니다.
startActivity()
finish()
onBackPressed()
참고 URL : https://stackoverflow.com/questions/4330675/how-can-i-add-an-animation-to-the-activity-finish
'IT' 카테고리의 다른 글
키보드 높이를 얻는 방법? (0) | 2020.09.06 |
---|---|
Angular 2에서 CSS를 동적으로 업데이트 (0) | 2020.09.06 |
이미 존재하는 Rails 자동 할당 ID (0) | 2020.09.06 |
Android 4.2 API 설치 문제 (0) | 2020.09.06 |
"Arrange-Assert-Act-Assert"내에 삽입? (0) | 2020.09.05 |