/**
  * Notify the widget that refresh state has changed. Do not call this when refresh is triggered by
  * a swipe gesture.
  *
  * @param refreshing Whether or not the view should show refresh progress.
  */
 public void setRefreshing(boolean refreshing) {
   if (mRefreshing != refreshing) {
     ensureTarget();
     mCurrPercentage = 0;
     mRefreshing = refreshing;
     if (mRefreshing) {
       mProgressBar.start();
     } else {
       mProgressBar.stop();
     }
   }
 }
 /**
  * Set the four colors used in the progress animation. The first color will also be the color of
  * the bar that grows in response to a user swipe gesture.
  *
  * @param colorRes1 Color resource.
  * @param colorRes2 Color resource.
  * @param colorRes3 Color resource.
  * @param colorRes4 Color resource.
  */
 public void setColorScheme(int colorRes1, int colorRes2, int colorRes3, int colorRes4) {
   ensureTarget();
   final Resources res = getResources();
   final int color1 = res.getColor(colorRes1);
   final int color2 = res.getColor(colorRes2);
   final int color3 = res.getColor(colorRes3);
   final int color4 = res.getColor(colorRes4);
   mProgressBar.setColorScheme(color1, color2, color3, color4);
 }
 private void setTriggerPercentage(float percent) {
   if (percent == 0f) {
     // No-op. A null trigger means it's uninitialized, and setting it to zero-percent
     // means we're trying to reset state, so there's nothing to reset in this case.
     mCurrPercentage = 0;
     return;
   }
   mCurrPercentage = percent;
   mProgressBar.setTriggerPercentage(percent);
 }
 @Override
 protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
   final int width = getMeasuredWidth();
   final int height = getMeasuredHeight();
   mProgressBar.setBounds(0, 0, width, mProgressBarHeight);
   if (getChildCount() == 0) {
     return;
   }
   final View child = getChildAt(0);
   final int childLeft = getPaddingLeft();
   final int childTop = mCurrentTargetOffsetTop + getPaddingTop();
   final int childWidth = width - getPaddingLeft() - getPaddingRight();
   final int childHeight = height - getPaddingTop() - getPaddingBottom();
   child.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);
 }
 @Override
 public void applyTransformation(float interpolatedTime, Transformation t) {
   float percent = mFromPercentage + ((0 - mFromPercentage) * interpolatedTime);
   mProgressBar.setTriggerPercentage(percent);
 }
 @Override
 public void draw(Canvas canvas) {
   super.draw(canvas);
   mProgressBar.draw(canvas);
 }
 /**
  * Set the four colors used in the progress animation. The first color will also be the color of
  * the bar that grows in response to a user swipe gesture.
  *
  * @param color1 Color.
  * @param color2 Color.
  * @param color3 Color.
  * @param color4 Color.
  */
 public void setColorSchemeFromColors(int color1, int color2, int color3, int color4) {
   ensureTarget();
   mProgressBar.setColorScheme(color1, color2, color3, color4);
 }