2012-03-14 17 views
6

Tôi có một AnimationSet với bên trong một ScaleAnimation và TranslateAnimation như thế này:Android ScaleAnimation và TranslateAnimation, làm thế nào để tránh ScaleAnimation phong trào

TranslateAnimation:

TranslateAnimation goTopFromRight = 
     new TranslateAnimation(0, -(right.getLeft()-top.getLeft()), 
           0,-(right.getTop()-top.getTop())); 

ScaleAnimation:

ScaleAnimation = setSizeForTop = new ScaleAnimation(1, 2, 1, 2); 

và AnimationSet:

bringToLeftFromTopAnimationSet = new AnimationSet(true); 
bringToTopFromRightAnimationSet.addAnimation(goTopFromRight); 
bringToTopFromRightAnimationSet.addAnimation(setSizeForTop); 

Vấn đề là khi tôi cố gắng sử dụng chỉ ScaleAnimation, mục của tôi đi đến vị trí tôi muốn, nhưng tôi đang sử dụng ScaleAnimation với TranslateAnimation trong AnimationSet, mục của tôi dịch nhiều hơn tôi cần, như thể ScaleAnimation giới thiệu một số chuyển động bổ sung abd Tôi không biết cách xóa chúng.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

4

Để tránh phong trào ScaleAnimation khi sử dụng ScaleAnimation và TranslateAnimation, bạn phải nhân parametres TranslateAnimation với những người từ ScaleAnimation như thế này:

TranslateAnimation goRightFromTop; 
ScaleAnimation sizeNotUp; 

goRightFromTop = new TranslateAnimation(0,(-(invisibleCenterImageView.getLeft() - imageViewRight.getLeft()))*(1/0.6667f), 0, (-(invisibleCenterImageView.getTop() - imageViewRight.getTop()))*(1/0.6667f)); 
sizeNotUp  = new ScaleAnimation(1,0.6667f,1,0.6667f,Animation.RELATIVE_TO_SELF, (float)0.5, Animation.RELATIVE_TO_SELF, (float)0.5); 

Và sau đó, bất ngờ bạn đã xóa phong trào ScaleAnimation.

1

Tôi nhớ có vấn đề lạ với hình động lồng nhau. Bạn đã thử đặt điểm pivot theo cách thủ công chưa? Xem public ScaleAnimation (float fromX, float toX, float fromY, float toY, float pivotX, float pivotY) từ http://developer.android.com/reference/android/view/animation/ScaleAnimation.html để biết. Nó có thể hoạt động.

+1

Cảm ơn bạn đã trả lời câu trả lời @ShadowMare và xin lỗi vì phát lại muộn. Trong thực tế, tôi không hiểu pivotX nổi và pivotY nổi là gì. –

+0

xin lỗi, không nhận thấy nhận xét. Tôi khá chắc chắn rằng bạn đã tìm ra rằng cả hai giá trị trục là điểm "neo" của hoạt ảnh. – ShadowMare

+1

Cảm ơn bạn @ShadowMare, trên thực tế, để tránh sự muvement, chúng tôi phải nhân các TranslateAnimation bởi các parametres ScaleAnimation. –

5

Giải pháp đúng là thay đổi thứ tự hoạt ảnh. Quy mô phải đi trước:

bringToTopFromRightAnimationSet.addAnimation(setSizeForTop); 
bringToTopFromRightAnimationSet.addAnimation(goTopFromRight); 
+0

Đây phải là giải pháp đúng. Cảm ơn! – Steelight

+0

Chắc chắn, câu trả lời này là chính xác –

0

Giải pháp của tôi là thêm hoạt ảnh vào chế độ xem của bạn trong khi áp dụng dịch hoạt ảnh cho vùng chứa.
Sau đó, bạn có thể tạo hoạt ảnh phức tạp hơn ngay cả thông qua XML ~

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