GifView.java 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.easymorse.dialog;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.content.Context;
  5. import android.graphics.Canvas;
  6. import android.graphics.Movie;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.View;
  10. public class MainActivity extends Activity {
  11. private Movie mMovie;
  12. private long mMovieStart;
  13. /** Called when the activity is first created. */
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. // setContentView(R.layout.main);
  18. setContentView(new CustomGifView(this));
  19. // Dialog customDialog = new Dialog(this);
  20. // customDialog.setTitle("test");
  21. // customDialog.setContentView(new CustomGifView(this));
  22. // customDialog.show();
  23. }
  24. class CustomGifView extends View {
  25. public CustomGifView(Context context) {
  26. super(context);
  27. mMovie = Movie.decodeStream(getResources().openRawResource(
  28. R.drawable.animation));
  29. }
  30. public void onDraw(Canvas canvas) {
  31. long now = android.os.SystemClock.uptimeMillis();
  32. if (mMovieStart == 0) { // first time
  33. mMovieStart = now;
  34. }
  35. if (mMovie != null) {
  36. int dur = mMovie.duration();
  37. if (dur == 0) {
  38. dur = 1000;
  39. }
  40. int relTime = (int) ((now - mMovieStart) % dur);
  41. mMovie.setTime(relTime);
  42. mMovie.draw(canvas, 0, 0);
  43. invalidate();
  44. }
  45. }
  46. }
  47. }