안녕하세요 아즈라엘 입니다. 


안드로이드 애니메이션 좀 허접하자나요..

(게임엔진을 봐서 그런지 더더욱 허접하게 느껴지긴하네요)


이번에 버튼이팩트를 만들기 위해서 버튼을 누르면 아래로 살짝 내려갔다 제자리로 돌아오는것을 만드는데

애니메이션을 순차적으로 할 수 있는게 없을까요?


전그냥 일단 애니메이션을 실행하고 끝나면 다시 애니메이션을 만들어서 또 시작을 하였습니다. 

효과는 그럭저럭 되는듯하나..문제는 소스기 누더기 처럼 보여서 보기엔 안좋네요..


좋은 방법 있으시면 같이 공유해요~!!^^


참고로 setFillAfter() 기능은 애니메이션이  끝나면 그 지점에서 멈춰있는겁니다.









private void btnAnimation(final View view) {
		final float moveY = width / 14.5f;
		// Animation
		AnimationSet animSet = new AnimationSet(true);
		animSet.setInterpolator(new AccelerateDecelerateInterpolator());
		animSet.setFillAfter(true);
		Animation trancelateDown = new TranslateAnimation(0, 0, 0, moveY);
		trancelateDown.setDuration(250);
		animSet.addAnimation(trancelateDown);
		animSet.setAnimationListener(new AnimationListener() {
			@Override
			public void onAnimationStart(Animation animation) {
			}


			@Override
			public void onAnimationRepeat(Animation animation) {
			}


			@Override
			public void onAnimationEnd(Animation animation) {
				AnimationSet animSet = new AnimationSet(true);
				animSet.setInterpolator(new AccelerateDecelerateInterpolator());
				animSet.setFillAfter(true);
				Animation trancelateDown = new TranslateAnimation(0, 0, moveY, 0);
				trancelateDown.setDuration(250);
				animSet.addAnimation(trancelateDown);
				animSet.setAnimationListener(new AnimationListener() {
					@Override
					public void onAnimationStart(Animation animation) {
					}


					@Override
					public void onAnimationRepeat(Animation animation) {
					}


					@Override
					public void onAnimationEnd(Animation animation) {
						switch (view.getId()) {
							case R.id.btn_calling:
								DebugUtils.d(TAG, "onAnimationEnd Call");
							break;


							case R.id.btn_habit:
								DebugUtils.d(TAG, "onAnimationEnd Habit");
							break;


							case R.id.btn_song:
								DebugUtils.d(TAG, "onAnimationEnd Song");
							break;
						}


					}
				});
				view.startAnimation(animSet);
			}
		});
		view.startAnimation(animSet);
	}