2012-08-13 6 views
1

동일한 애니메이션이있는 두 개의보기가 있습니다.이 애니메이션에서 이러한보기는 예를 들어 Z 주문을 변경해야합니다. 애니메이션 중에이보기 A가보기 B 위에 있습니다.이 순서를 변경하면 점점 커지고 있습니다. 이 viewA 또는 viewB .bringToFront(); 하지만 업데이 트가 즉각되지 않습니다 그리고이 Z 순서가 정확한 지점에서 변경해야합니다.애니메이션 도중 Z 순서 변경

감사합니다. 다음과 같이

답변

2

나는이 문제를 해결 :

애니메이션에서

먼저 사용자 지정 보간을 설정 클래스의 요구를 구현합니다

public void currentProgress(float p, float time) { 
    if(time == yourTime){ 
     a.bringToFront(); 
     a.invalidate(); 
     b.invalidate(); 
     a.requestLayout(); 
     b.requestLayout(); 
    } 
} 

currentProgress가 inteface을 방법이

animation.setInterpolator(new CustomInterpolator(this)); 
a.startAnimation(animation); 
b.startAnimation(animation); 

후 ICustomInterpolator에게 커스텀 인터폴 레이터의 예 :

public interface ICustomInterpolator { 
    public void currentProgress(float p, float time); 
} 

맞춤 입력기 :

public class CustomInterpolator extends 
    AccelerateDecelerateInterpolator { 

    private ICustomInterpolator delegate; 

    public <T extends ICustomInterpolator> CustomInterpolator(T delegate) { 
     super(); 
     this.delegate = delegate; 
    } 

    @Override 
    public float getInterpolation(float input) { 
     delegate.currentProgress(input); 
     return super.getInterpolation(input); 
    } 
} 
관련 문제