내 앱에서 액티비티 A에서 액티비티 B로가는 통로에 애니메이션을 적용하고 싶습니다. 특히, 버튼을 클릭하면 액티비티 A가 밖으로 나오고 액티비티 B는 페이드 인하 고 뒤로 버튼을 클릭하면 페이드 아웃하기 위해 액티비티 B가 들어가고 액티비티 A가 들여 오기를 원합니다. 음, 첫 번째 애니메이션 (밖으로 슬라이드 - 페이드 인) 잘 작동합니다. 그러나 뒤로 버튼을 클릭하면 애니메이션이 트리거되지만 때로는 활동 B와 빈 화면이 사라지는 것을 볼 수있는 대부분의 시간에는 활동 A가 전혀 나타나지 않습니다. 무엇이 잘못 될 수 있습니까?finishAfterTransition()이 제대로 작동하지 않습니다.
활동 A : :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setupWindowAnimations();
}
...
}
@Override
protected void setupWindowAnimations() {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Slide slide = new Slide();
slide.setDuration(1000);
slide.setSlideEdge(Gravity.RIGHT);
getWindow().setExitTransition(slide);
getWindow().setReenterTransition(slide);
}
}
활동 B : 버튼에
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLayout(R.layout.file_browser);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setupWindowAnimations();
}
...}
@Override
protected void setupWindowAnimations() {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Fade fade = new Fade();
fade.setDuration(1000);
getWindow().setEnterTransition(fade);
getWindow().setReturnTransition(fade);
}
}
클릭 활동 A에서 활동 B를 시작합니다
fab.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(ActivityA.this);
Intent intent = new Intent(ActivityA.this,ActivityB.class);
startActivity(intent, options.toBundle());
}});
여기 내 코드입니다
뒤로 버튼의 방법 :
@Override
public boolean onSupportNavigateUp(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
finishAfterTransition();
}
return true;
}
나는 뭔가를 잃어 버렸을 것입니다. 내가 알아낼 수있게 도와 주길 바래. 미리 감사드립니다.
나를 위해 잘 작동합니다. 무슨 문제인가? 수정 사항을 찾았습니까? 돌아올 때 활동 A가 왼쪽에서 오른쪽으로 전환과 함께 호출됩니다. – AskQ