2012-03-30 43 views
24

Ok vì vậy tôi có một hoạt động có nhiều ImageView và khi bạn nhấp vào ImageView sẽ mờ dần và mờ dần. để tìm ra là làm thế nào tôi có thể nhấp vào một ImageView và bắt đầu các hình ảnh động và khi tôi nhấp vào một hình ảnh thứ hai và hoạt hình vẫn chạy nó sẽ bỏ qua một thứ hai. Tôi nghĩ rằng tôi cần phải làm một cái gì đó với các animationListener nhưng tôi không thể tìm ra cách sử dụng để kiểm tra xem các hình ảnh động đang chạy hay không trước khi tôi bắt đầu một hình ảnh động mới. Tôi có thể thề rằng tôi đã thấy một ví dụ đã làm điều này nhưng tôi đã tìm kiếm ngày và không thể tìm thấy nó nữa, tôi hy vọng một ai đó sẽ có thể giúp đỡ ở đây ..... dưới đây là mã cho tôi hoạt ảnh:ANDROID - cách kiểm tra xem hoạt ảnh có đang chạy hay không trước khi bắt đầu hoạt ảnh mới

// Create Animation 
protected void fadeAnimation() { 
    tempImg.startAnimation(fadeout); 
    //Allow animation to finish 
    mHandler.postDelayed(new Runnable() { 
     public void run() { 
     tempImg.startAnimation(fadein); 
     } 
    }, 1000); 
} 

Trả lời

29

Tôi giả định cả hai fadeout và fadein là Animation đối tượng.

Sử dụng fadeout.hasEnded() để kiểm tra xem thiết bị đầu tiên đã hoàn thành trước khi bắt đầu thiết bị thứ hai.

Để biết thêm chi tiết về các lớp Animation, xem tại đây: http://developer.android.com/reference/android/view/animation/Animation.html

+5

điều gì sẽ xảy ra khi hoạt ảnh chưa chạy, do đó, điều đó sẽ không trả lại kết quả sai do đó sẽ hủy hoạt ảnh. Tôi sẽ cho nó một phát bắn nhưng đó là ý nghĩ đầu tiên xuất hiện trong đầu tôi. Cảm ơn bạn đã giúp đỡ một trong hai cách. –

+0

Điều đó đã làm điều đó, chỉ cần thay đổi một vài điều trong cú pháp và nó hoạt động rất tốt. Tôi thực sự đánh giá cao sự giúp đỡ. Cảm ơn nhiều! –

+1

@ChrisD Tôi đang đối mặt với cùng một vấn đề. Tôi đã kiểm tra bằng cách sử dụng hàm hasEnded() nhưng vấn đề là lần đầu tiên luôn trả về false. Bạn có thể giúp tôi không? – Kunu

2

Thay vì phải vòng lặp có thể trong một thread kiểm tra nếu một phim hoạt hình đã kết thúc, bạn có thể sử dụng một người biết lắng nghe hoạt hình, làm một cái gì đó như thế này:

// Create Animation 
protected void fadeAnimation() { 
    fadeout.setAnimationListener(new Animation.AnimationListener(){ 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 
     @Override 
     public void onAnimationEnd(Animation animation) { 
       tempImg.startAnimation(fadein); 
     }    
     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 

    }; 
    tempImg.startAnimation(fadeout); 

} 

Với loại giải pháp này, bạn sẽ không cần phải chủ động kiểm tra xem hoạt ảnh đã kết thúc chưa và thời gian hoạt ảnh với thời lượng của hoạt ảnh trước đó.

OnAnimationEnd (Hoạt ảnh) được kích hoạt ngay sau khi hoạt ảnh kết thúc. Điều này cũng giải quyết vấn đề người dùng với tùy chọn nhà phát triển "bật" và tốc độ hoạt ảnh được đặt thành "tắt".

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