2012-09-10 3 views
10

누군가가 Android 애니메이션에 대해 알고 있습니까? 다음과 같은 것을 만들고 싶습니다.Android에서 애니메이션 이동/크기 조정을 만드는 방법은 무엇입니까?

  • 내 장치 화면 중앙에 큰 이미지가 있습니다.
  • 이 이미지는 작아 져 (애니메이션으로) 내 장치 화면의 구석으로갑니다.
이 울부 짖는 순서와 같은

그 무엇인가 : 어떤 힌트 매우 감사하겠습니다

enter image description here

! 미리 감사드립니다!

답변

8

scaleXBy()translateYBy()과 같은 방법으로 ViewPropertyAnimator을 사용하십시오. API 레벨 11 이상에서 에 animate()으로 전화하여 ViewPropertyAnimator을받습니다. 구형 장치를 지원하는 경우 NineOldAndroids은 작업 현장에 가까운 백 포트를 제공합니다.

또한 읽을 할 수 있습니다

+0

감사합니다. CommonsWare. 확실하게, 이것은 큰 도움이된다! – mthama

7

나는 동시 회전과 움직임 클래스가 있습니다. 값 비싸지 만 모든 API 버전에서 작동합니다.

public class ResizeMoveAnimation extends Animation { 
    View view; 
    int fromLeft; 
    int fromTop; 
    int fromRight; 
    int fromBottom; 
    int toLeft; 
    int toTop; 
    int toRight; 
    int toBottom; 

    public ResizeMoveAnimation(View v, int toLeft, int toTop, int toRight, int toBottom) { 
     this.view = v; 
     this.toLeft = toLeft; 
     this.toTop = toTop; 
     this.toRight = toRight; 
     this.toBottom = toBottom; 

     fromLeft = v.getLeft(); 
     fromTop = v.getTop(); 
     fromRight = v.getRight(); 
     fromBottom = v.getBottom(); 

     setDuration(500); 
    } 

    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 

     float left = fromLeft + (toLeft - fromLeft) * interpolatedTime; 
     float top = fromTop + (toTop - fromTop) * interpolatedTime; 
     float right = fromRight + (toRight - fromRight) * interpolatedTime; 
     float bottom = fromBottom + (toBottom - fromBottom) * interpolatedTime; 

     RelativeLayout.LayoutParams p = (LayoutParams) view.getLayoutParams(); 
     p.leftMargin = (int) left; 
     p.topMargin = (int) top; 
     p.width = (int) ((right - left) + 1); 
     p.height = (int) ((bottom - top) + 1); 

     view.requestLayout(); 
    } 
} 
+0

yip ... 잘 작동합니다. – Houston

+0

훌륭하게 작동합니다! 감사! – instanceof

+0

언급 한대로이 크기 조정 애니메이션을 뷰와 함께 어떻게 호출할까요? – shobhan

관련 문제