content: package com.wm.remusic.widget;
  
  import android.content.Context;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.graphics.Canvas;
  import android.graphics.Matrix;
  import android.graphics.Rect;
  import android.graphics.drawable.Drawable;
  import android.os.Build;
  import android.util.AttributeSet;
  import android.widget.SeekBar;
  
  import com.wm.remusic.R;
  
  /**
   * Created by wm on 2016/12/29.
   */
  public class PlayerSeekBar extends SeekBar {
  
      private boolean drawLoading = false;
      private int degree = 0;
      private Matrix matrix = new Matrix();
      private Bitmap loading = BitmapFactory.decodeResource(getResources(), R.drawable.play_plybar_btn_loading);
      private Drawable drawable;
  
      public PlayerSeekBar(Context context) {
          super(context);
      }
  
      public PlayerSeekBar(Context context, AttributeSet attrs) {
          super(context, attrs);
          setThumb(getContext().getResources().getDrawable(R.drawable.play_plybar_btn));
      }
  
      public void setLoading(boolean loading) {
          if (loading) {
              drawLoading = true;
              invalidate();
          }else {
              drawLoading = false;
          }
      }
  
      @Override
      public void setThumb(Drawable thumb) {
          Rect localRect = null;
          if (drawable != null) {
              localRect = drawable.getBounds();
          }
          super.setThumb(drawable);
          drawable = thumb;
          if ((localRect != null) && (drawable != null)) {
              drawable.setBounds(localRect);
          }
      }
  
      @Override
      public Drawable getThumb() {
          if (Build.VERSION.SDK_INT >= 16) {
              return super.getThumb();
          }
          return drawable;
      }
  
      @Override
      protected synchronized void onDraw(Canvas canvas) {
          super.onDraw(canvas);
          if (drawLoading) {
              canvas.save();
              degree = ((int) (degree + 3.0F));
              degree %= 360;
              matrix.reset();
              matrix.postRotate(degree, loading.getWidth() / 2, loading.getHeight() / 2);
              canvas.translate(getPaddingLeft() + getThumb().getBounds().left + drawable.getIntrinsicWidth() / 2 - loading.getWidth() / 2 - getThumbOffset(), getPaddingTop() + getThumb().getBounds().top + drawable.getIntrinsicHeight() / 2 - loading.getHeight() / 2);
              canvas.drawBitmap(loading, matrix, null);
              canvas.restore();
              invalidate();
          }
  
      }
  }
  