@Override
  public void onDownloadProgressChange(final DownloadInfo downloadInfo) {
    //        Observable.create(new Observable.OnSubscribe<DownloadInfo>() {
    //            @Override
    //            public void call(Subscriber<? super DownloadInfo> subscriber) {
    //                subscriber.onNext(downloadInfo);
    //            }
    //        })
    //        Observable.just(downloadInfo)
    //                .observeOn(AndroidSchedulers.mainThread())
    //                .filter(new Func1<DownloadInfo, Boolean>() {
    //                    @Override
    //                    public Boolean call(DownloadInfo downloadInfo) {
    //                        return appInfo.getId() == downloadInfo.getId();
    //                    }
    //                })
    //                .subscribe(new Action1<DownloadInfo>() {
    //                    @Override
    //                    public void call(DownloadInfo downloadInfo) {
    //                        refreshUI(downloadInfo.getCurrentState(),downloadInfo.getProgress());
    //                    }
    //                });

    // 状态发生切换的时候,UI的具体的变化过程
    if (downloadInfo.getId() == appInfo.getId()) {
      UIUtil.runInMainThread(
          new Runnable() {
            @Override
            public void run() {
              // 根据不同的状态和进度条百分比更新UI操作
              refreshUI(downloadInfo.getCurrentState(), downloadInfo.getProgress());
            }
          });
    }
  }
 private void refreshUI(@DownloadInfo.DownloadState int state, float progress) {
   this.currentState = state;
   this.progress = progress;
   switch (state) {
     case DownloadManager.STATE_NONE:
       btnDownload.setVisibility(View.VISIBLE);
       btnDownload.setText(UIUtil.getString(R.string.app_state_download));
       progressHorizontal.setVisibility(View.GONE);
       break;
     case DownloadManager.STATE_DOWNLOADING:
       btnDownload.setVisibility(View.GONE);
       progressHorizontal.setVisibility(View.VISIBLE);
       progressHorizontal.setProgress(progress);
       progressHorizontal.setCenterText("");
       break;
     case DownloadManager.STATE_PAUSE:
       btnDownload.setVisibility(View.GONE);
       progressHorizontal.setVisibility(View.VISIBLE);
       progressHorizontal.setProgress(progress);
       progressHorizontal.setCenterText(UIUtil.getString(R.string.app_state_paused));
       break;
     case DownloadManager.STATE_ERROR:
       btnDownload.setVisibility(View.VISIBLE);
       btnDownload.setText(UIUtil.getString(R.string.app_state_error));
       progressHorizontal.setVisibility(View.GONE);
       break;
     case DownloadManager.STATE_WAITING:
       btnDownload.setVisibility(View.VISIBLE);
       btnDownload.setText(UIUtil.getString(R.string.app_state_waiting));
       progressHorizontal.setVisibility(View.GONE);
       break;
     case DownloadManager.STATE_DOWNLOADED:
       btnDownload.setVisibility(View.VISIBLE);
       btnDownload.setText(UIUtil.getString(R.string.app_state_downloaded));
       progressHorizontal.setVisibility(View.GONE);
       break;
     default:
       break;
   }
 }
  @Override
  protected View initView() {
    View root = UIUtil.inflate(R.layout.layout_bottom_bar);
    ButterKnife.bind(this, root);

    progressHorizontal = new ProgressHorizontal(UIUtil.getContext());
    // 让百分比的文字可以显示方法
    progressHorizontal.setProgressTextVisible(true);
    // 百分比的文字需要定义成白色
    progressHorizontal.setProgressTextColor(Color.WHITE);
    // 百分比的文字显示大小
    progressHorizontal.setProgressTextSize(UIUtil.dp2px(18));
    // 定义自定义控件的蓝色前景图片
    progressHorizontal.setProgressResource(R.drawable.progress_normal);
    // 定义其灰色背景图片
    progressHorizontal.setProgressBackgroundResource(R.drawable.progress_bg);
    // 将自定义的进度条放置在帧布局上显示
    FrameLayout.LayoutParams layoutParams =
        new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
    flProgress.addView(progressHorizontal, layoutParams);

    return root;
  }