+ if(gifMovie == null){
+ super.onDraw(canvas);
+ } else {
+ long nowTick = android.os.SystemClock.uptimeMillis();
+ if (lastTick == 0) {
+ movieRunDuration = 0;
+ } else {
+ movieRunDuration += nowTick -lastTick;
+ if(movieRunDuration > movieDuration){
+ movieRunDuration = 0;
+ }
+ }
+
+ gifMovie.setTime((int) movieRunDuration);
+
+ float scale;
+ if(gifMovie.height() > getHeight() || gifMovie.width() > getWidth()) {
+ scale = (1f / Math.min(canvas.getHeight() / gifMovie.height(),
+ canvas.getWidth() / gifMovie.width())) + 0.25f;
+ } else {
+ scale = Math.min(canvas.getHeight() / gifMovie.height(),
+ canvas.getWidth() / gifMovie.width());
+ }
+
+ canvas.scale(scale, scale);
+ canvas.translate(((float) getWidth() / scale - (float) gifMovie.width()) / 2f,
+ ((float) getHeight() / scale - (float) gifMovie.height()) /2f);
+
+ gifMovie.draw(canvas, 0, 0);
+
+ lastTick = nowTick;
+ invalidate();
+ }
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ setMeasuredDimension(movieWidth, movieHeight);