/Research/Example projects/Android OGL/ModelRenderer/src/edu/union/android/ViewAnimator.java

https://bitbucket.org/DeveloperUX/behaviortree · Java · 51 lines · 43 code · 8 blank · 0 comment · 5 complexity · af3c308837860a611a3ace8327c664ba MD5 · raw file

  1. package edu.union.android;
  2. import android.os.Handler;
  3. import android.os.Message;
  4. import android.os.SystemClock;
  5. import android.view.View;
  6. public class ViewAnimator extends Handler {
  7. boolean running;
  8. View view;
  9. long nextTime;
  10. long step;
  11. public static final int NEXT = 0;
  12. public ViewAnimator(View view) {
  13. this(view, 30);
  14. }
  15. public ViewAnimator(View view, int fps) {
  16. this.running = false;
  17. this.view = view;
  18. this.step = 1000/fps;
  19. }
  20. public void start() {
  21. if (!running) {
  22. running = true;
  23. Message msg = obtainMessage(NEXT);
  24. sendMessageAtTime(msg, SystemClock.uptimeMillis());
  25. nextTime = SystemClock.uptimeMillis()+step;
  26. }
  27. }
  28. public void stop() {
  29. running = false;
  30. }
  31. public void handleMessage(Message msg) {
  32. if (running && msg.what == NEXT) {
  33. view.invalidate();
  34. msg = obtainMessage(NEXT);
  35. long current = SystemClock.uptimeMillis();
  36. if (nextTime < current) {
  37. nextTime = nextTime + step;
  38. }
  39. sendMessageAtTime(msg, nextTime);
  40. nextTime += step;
  41. }
  42. }
  43. }