현재 TranslateAnimation을 사용하여 버튼의 위치를 애니메이션하려고합니다. 여러 장소에서 실제 버튼 이동뿐만 아니라 드로어 블을 만드는 방법은 애니메이션 후에 레이아웃을 변경하는 것입니다. 나는 그 일을했지만 두 가지 문제/해결책이있다.버튼 번역 및 지속시키기
setFillAfter (true)를 추가한다. drawable은 애니메이션 이후에도 지속되지만 레이아웃이 변경되면 drawable은 변환 거리만큼 오프셋되고 버튼의 빈 프레임은 이제 있어야합니다.
setFillAfter (false)를 추가하십시오. 이 작업을 수행 한 다음 애니메이션이 제대로 작동 한 후에 레이아웃을 설정하지만 아이콘이 깜박이면 애니메이션 종료와 새 레이아웃 매개 변수가있는 화면 새로 고침 사이의 지연이라고 가정합니다. 현재이 코드를 사용하고 있지만 플래시가 용납 될 수 없으므로 해결 방법을 찾고 싶습니다.
final View aniView = v; // v is some view
TranslateAnimation ani = new TranslateAnimation(0,
240 - v.getLeft() - v.getWidth()/2,
0,
240 - v.getTop() - v.getHeight()/2);
ani.setDuration(500);
ani.setFillAfter(false);
ani.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation a) {
aniView.setTag(new Boolean(true));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(aniView.getWidth(),
aniView.getHeight());
params.leftMargin = 240 - aniView.getWidth()/2;
params.topMargin = 240 - aniView.getHeight()/2;
aniView.setLayoutParams(params);
}
public void onAnimationStart(Animation a) {}
public void onAnimationRepeat(Animation a) {}
});
v.animationStart(ani);