Tôi phải tạo hiệu ứng một chế độ xem từ trạng thái A sang B với các thay đổi về tỷ lệ, vị trí và cuộn của nó.Hoạt hình dịch và chia tỷ lệ xem trong Android
Các mã sau gần hiện các trick:
AnimationSet animation = new AnimationSet(true);
int fromXDelta = view.getScrollX();
int fromYDelta = view.getScrollY();
view.scrollTo(0, 0);
float scale = (float) widthB/(float) widthA;
// Calculate toXDelta and toYDelta
TranslateAnimation translateAnimation = new TranslateAnimation(-fromXDelta, -toXDelta, -fromYDelta, -toYDelta);
translateAnimation.setDuration(duration);
animation.addAnimation(translateAnimation);
ScaleAnimation scaleAnimation = new ScaleAnimation(1, scale, 1, scale);
scaleAnimation.setDuration(duration);
animation.addAnimation(scaleAnimation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation arg0) {
view.clearAnimation();
// Change view to state B by modifying its layout params and scroll
}
@Override public void onAnimationRepeat(Animation arg0) {}
@Override public void onAnimationStart(Animation arg0) {}
});
view.startAnimation(animation);
Logic của onAnimationEnd làm cho nhấp nháy xem sau khi các hình ảnh động kết thúc. Ngoài ra nếu tôi không gọi clearAnimation() hoạt ảnh không hoạt động như mong đợi (tại sao?).
Đây có phải là cách phù hợp để thực hiện việc này không?
Cảm ơn!