2012-09-10 33 views
10

Có ai đó biết về hoạt ảnh trên Android không? Tôi muốn tạo một cái gì đó như sau:Làm cách nào để tạo các hoạt ảnh di chuyển/thay đổi kích thước trong Android?

  • Tôi có một hình ảnh lớn ở giữa màn hình thiết bị;
  • hình ảnh này trở nên nhỏ (bằng hoạt ảnh) và chuyển tới góc màn hình thiết bị của tôi;

của nó giống như theo thứ tự dưới đây:

enter image description here

Bất kỳ gợi ý sẽ rất cảm kích! Cảm ơn trước!

Trả lời

8

Sử dụng ViewPropertyAnimator, với các phương pháp như scaleXBy()translateYBy(). Bạn nhận được số ViewPropertyAnimator bằng cách gọi số animate() trên số View, ở cấp API 11+. Nếu bạn đang hỗ trợ các thiết bị cũ hơn, thì NineOldAndroids sẽ cung cấp backport gần như làm việc.

Bạn cũng có thể bạn muốn đọc:

+0

Cảm ơn CommonsWare. Rất tiếc, đây là sự trợ giúp tuyệt vời! – mthama

7

Tôi có một lớp học với sự quay đồng thời và phong trào. Đó là tốn kém nhưng nó hoạt động trên tất cả các phiên bản 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 ... hoạt động tốt – Houston

+0

Điều này hoạt động rực rỡ! Cảm ơn! – instanceof

+0

Làm cách nào để gọi hoạt ảnh thay đổi kích thước này bằng chế độ xem như đã đề cập – shobhan

Các vấn đề liên quan