返回介绍

setRefresh

发布于 2024-12-23 22:24:45 字数 1433 浏览 0 评论 0 收藏 0

/**
  * 改变刷新动画的的圆圈刷新状态。Notify the widget that refresh state has changed. Do not call this when
  * refresh is triggered by a swipe gesture.
  *
  * @param refreshing 是否显示刷新的圆圈
  */
 public void setRefreshing(boolean refreshing) {
   if (refreshing && mRefreshing != refreshing) {
     // scale and show
     mRefreshing = refreshing;
     int endTarget = 0;
     if (!mUsingCustomStart) {
       endTarget = (int) (mSpinnerFinalOffset + mOriginalOffsetTop);
     } else {
       endTarget = (int) mSpinnerFinalOffset;
     }
     setTargetOffsetTopAndBottom(endTarget - mCurrentTargetOffsetTop,
         true /* requires update */);
     mNotify = false;
     startScaleUpAnimation(mRefreshListener);
   } else {
     setRefreshing(refreshing, false /* notify */);
   }
 }

startScaleUpAnimation 开启一个动画,然后在动画结束后回调 onRefresh 方法。

private Animation.AnimationListener mRefreshListener = new Animation.AnimationListener() {
   // .. 省略代码
   @Override
   public void onAnimationEnd(Animation animation) {
     if (mRefreshing) {
       mProgress.setAlpha(MAX_ALPHA); //确保刷新圆圈中间的进度条是完全不透明了
       mProgress.start();
       if (mNotify) { // 当 mNotify 为 true 时才会回调 onRefresh
         if (mListener != null) {
           // 回调 listener 的 onRefresh 方法
           mListener.onRefresh();
         }
       }
       mCurrentTargetOffsetTop = mCircleView.getTop();
     } else {
       reset();
     }
   }
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文