2017-09-29 1 views
1

시작시 로더에 애니메이션을 적용하려고합니다. 어떻게하면 타이머를 멈추는 데 ontouch 리스너를 사용하지 않고 3 초 정도의 시간을 사용합니까?android에서 애니메이션을 시간 측정하는 방법

private void showdiag() { 
    loader = findViewById(R.id.loader); 
    logo= loader.findViewById(R.id.logo); 
    logo.setAnimation(AnimationUtils.loadAnimation(this,R.anim.rotate)); 
    loader.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      loader.setVisibility(View.GONE); 
     } 
    }); 




} 

답변

0
logo.getAnimation().setAnimationListener(new Animation.AnimationListener() { 
    @Override public void onAnimationStart(Animation animation) { 

    } 

    @Override public void onAnimationEnd(Animation animation) { 
    loader.setVisibility(View.GONE); 
    } 

    @Override public void onAnimationRepeat(Animation animation) { 

    } 
}); 
+0

감사하지만 그것은 무한히 실행합니다. 3 초 동안 실행되도록 시간을 설정하고 싶습니다. –

1

당신은 일련의 지연 후 어떤 행동을 실행하는 데 View.postDelayed()를 사용할 수 있습니다 : 여기 내 코드입니다

private void showdiag() { 
    loader = findViewById(R.id.loader); 
    logo = loader.findViewById(R.id.logo); 
    logo.setAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate)); 

    loader.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      loader.setVisibility(View.GONE); 
     } 
    }, 3000); 
} 
+0

감사합니다 !!!! 내가 원하는 방식으로 작동합니다. –

0
Please try following code. 

    logo.getAnimation().setAnimationListener(new Animation.AnimationListener() { 
      @Override public void onAnimationStart(Animation animation) { 

      } 

      @Override public void onAnimationEnd(Animation animation) { 
      loader.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      loader.setVisibility(View.GONE); 
     } 
    }, 3000); 
      } 

      @Override public void onAnimationRepeat(Animation animation) { 

      } 
     }); 
+0

감사합니다.이 기능은 현재 작동 중입니다. –

+0

만약 당신이 도움이된다면 upvote하십시오 – namezhouyu

+0

불행히도 @namezhouyu 내 평판은 저를 그렇게 허용하지 않습니다. –

관련 문제