2011-12-02 28 views

Trả lời

8

Bạn sử dụng phiên bản Android nào? Vì cấp API 11, bạn có thể sử dụng tùy chỉnh Animators để có thể dễ dàng triển khai bản dịch đường cong của mình.

Nếu bạn sử dụng một phiên bản dưới đây rằng có afaik chỉ khả năng tự nối nhiều dịch tuyến tính bằng cách sử dụng dịch hoạt hình và thiết lập thính giả hoạt hình

EDIT:

Ví dụ:

View view; 
animator = ValueAnimator.ofFloat(0, 1); // values from 0 to 1 
animator.setDuration(5000); // 5 seconds duration from 0 to 1 
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() 
{ 
    @Override 
    public void onAnimationUpdate(ValueAnimator animation) { 
     float value = ((Float) (animation.getAnimatedValue())) 
        .floatValue(); 
     // Set translation of your view here. Position can be calculated 
     // out of value. This code should move the view in a half circle. 
     view.setTranslationX((float)(200.0 * Math.sin(value*Math.PI))); 
     view.setTranslationY((float)(200.0 * Math.cos(value*Math.PI))); 
    } 
}); 

Tôi hy vọng nó hoạt động. Chỉ cần sao chép & dán (và rút ngắn và thay đổi) mã từ một trong các ứng dụng của tôi.

+0

Vui lòng cung cấp một số mã mẫu để chuẩn bị bản dịch đường cong trong android 3.0. – user884126

+0

Có u. Tôi hy vọng nó hoạt động –

+0

@ js-sir, tôi có thể thực hiện một hình ảnh động cong cho mức api dưới 11 bằng cách sử dụng thư viện chín tuổi-android ?? –

-1

Hãy xem xét liên kết web sau. Nó là một trò chơi trong C. Bạn cần cô lập hàm projectile() và cố gắng hiểu các biến được định nghĩa bên trong nó. Một khi bạn nhận được rằng hãy thử thực hiện nó trong mã của riêng bạn.

http://www.daniweb.com/software-development/c/code/216266

+2

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, nó sẽ là thích hợp hơn (http://meta.stackexchange.com/q/8259) để bạn chỉnh sửa câu trả lời để bao gồm các phần thiết yếu của giải pháp và cung cấp liên kết để tham khảo. –

3

Sau đây là các họa sĩ tôi sử dụng:

Mục đích: Chuyển Chế độ xem "view" cùng đường "đường dẫn"

Android v21 +:

// Animates view changing x, y along path co-ordinates 
ValueAnimator pathAnimator = ObjectAnimator.ofFloat(view, "x", "y", path) 

Android v11 +:

// Animates a float value from 0 to 1 
ValueAnimator pathAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); 

// This listener onAnimationUpdate will be called during every step in the animation 
// Gets called every millisecond in my observation 
pathAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

float[] point = new float[2]; 

@Override 
    public void onAnimationUpdate(ValueAnimator animation) { 
     // Gets the animated float fraction 
     float val = animation.getAnimatedFraction(); 

     // Gets the point at the fractional path length 
     PathMeasure pathMeasure = new PathMeasure(path, true); 
     pathMeasure.getPosTan(pathMeasure.getLength() * val, point, null); 

     // Sets view location to the above point 
     view.setX(point[0]); 
     view.setY(point[1]); 
    } 
}); 

Tương tự như: Android, move bitmap along a path?

+1

Bạn nên dành nhiều thời gian hơn để giải thích cách hoạt động của câu trả lời, vì vậy người hỏi có thể làm theo mã của bạn dễ dàng hơn. – SuperBiasedMan

+1

@SuperBiasedMan Cảm ơn bạn đã phản hồi! Đã thêm giải thích trong nhận xét. –

+0

Tôi phải làm: 'pathMeasure.getLength()/2' vì chế độ xem tiếp tục quay lại vị trí ban đầu của nó. – Rick

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