2017-12-17 4 views
1

새 액티비티를 시작한 후 프래그먼트의 액티비티에서 finish()를 호출합니다. 문제는 이전 액티비티를 완료 할 때 메소드가 호출 될 때 레이아웃과 마무리의 애니메이션이 표시된다는 것입니다.액티비티를 시작한 후 프래그먼트의 레이아웃이 깜박이고 이전 액티비티에서 finish()를 호출합니다.

나는 처음부터 끝내려고 노력했지만, 나는 그것을 볼 수있어서 끔찍했다.

코드 :

if(getActivity() != null){ 
     Glide.with(getActivity()).load(R.mipmap.ic_launcher).into(mIcon); 
     Animation myFadeInAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.anim_splash_icon_pulse_scale); 
     mIcon.startAnimation(myFadeInAnimation); 

     int mRandom = new Random().nextInt(mMemesArray.length); 
     mMemeText.setText(mMemesArray[mRandom]); 

     try{ 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        Intent intent = new Intent(getActivity(), ActivityMain.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        getActivity().startActivity(intent); 

        new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          getActivity().finish(); 
         } 
        },1000 * 2); 
       } 
      },1000 * 3); 
     } catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 

나는보기를 제거 애니메이션 이미지 뷰를 취소하려고했습니다. 같은 결과가있었습니다.

+0

: I()가에서 onCreate 모두 활동의 방법을 다음과 같은 값을 사용하고이 문제를 극복하기 위해 https://stackoverflow.com/questions/31817937/activity-layout-blinking 내 프로젝트의 – Jaeger

답변

0

내가 알기로는 이것은 활동 전환 중복으로 인한 것입니다. 이미이 문제를 확인했습니다

getWindow().setAllowEnterTransitionOverlap(false); 
getWindow().setAllowReturnTransitionOverlap(false); 
+0

min-api라고하는 -after-finish-is-called는 16이므로이 솔루션이 작동하지 않습니다. 필자는 번들에 페이드 애니메이션을 추가하여 문제를 해결하고이를 의도에 첨부했습니다. 페이드 애니메이션은 두 알파 필드에 대해 1.0의 알파를 갖는 200의 지속 시간을 가지므로 페이드 애니메이션은 발생하지 않으며 마무리 (시험되고 이상하게 보일 수도 있지만 작업을 수행함) 할 때 윈도우가 겹치지 않습니다. – Jaeger

관련 문제