1. 程式人生 > >炫酷的進度條效果實現

炫酷的進度條效果實現

A Special Progress Bar for Android

Preview

SpecialProgressBar

SpecialProgressBar

SpecialProgressBar

Usage xml

  <com.mrzk.specialprolibrary.SpecialProgressBarView
        android:id="@+id/ls"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        app:startDrawable="@drawable/ic_file_upload_white_36dp"
        app:endSuccessDrawable="@drawable/ic_done_white_36dp"
        app:textSize="12sp"
        app:textColorSuccess="#66A269"
        app:textColorNormal="#491C14"
        app:textColorError="#BC5246"
        app:progressBarHeight="4dp"
        app:progressBarBgColor="#491C14"
        app:progressBarColor="#ffffff"
        app:canReBackable="true"
        app:canDragable="false"
        />

java

            ls = (SpecialProgressBarView) findViewById(R.id.ls);
            ls.setEndSuccessBackgroundColor(Color.parseColor("#66A269"))//設定進度完成時背景顏色
            .setEndSuccessDrawable(R.drawable.ic_done_white_36dp,null)//設定進度完成時背景圖片
            .setCanEndSuccessClickable(false)//設定進度完成後是否可以再次點選開始
            .setProgressBarColor(Color.WHITE)//進度條顏色
            .setCanDragChangeProgress(false)//是否進度條是否可以拖拽
            .setCanReBack(true)//是否在進度成功後返回初始狀態
            .setProgressBarBgColor(Color.parseColor("#491C14"))//進度條背景顏色
            .setProgressBarHeight(ls.dip2px(this,4))//進度條寬度
            .setTextSize(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics()))//設定字型大小
            .setStartDrawable(R.drawable.ic_file_upload_white_36dp,null)//設定開始時背景圖片
            .setTextColorSuccess(Color.parseColor("#66A269"))//設定成功時字型顏色
            .setTextColorNormal(Color.parseColor("#491C14"))//設定預設字型顏色
            .setTextColorError(Color.parseColor("#BC5246"));//設定錯誤時字型顏色

            ls.beginStarting();//啟動開始開始動畫
            ls.setError();//進度失敗 發生錯誤

   ls.setOnAnimationEndListener(new SpecialProgressBarView.AnimationEndListener() {
            @Override
            public void onAnimationEnd() {
                ls.setMax(187);
                ls.setProgress(num);//初次進入在動畫結束時設定進度
            }
        });
        ls.setOntextChangeListener(new SpecialProgressBarView.OntextChangeListener() {
            @Override
            public String onProgressTextChange(SpecialProgressBarView specialProgressBarView, int max, int progress) {
                return progress * 100 / max + "%";
            }

            @Override
            public String onErrorTextChange(SpecialProgressBarView specialProgressBarView, int max, int progress) {
                return "error";
            }

            @Override
            public String onSuccessTextChange(SpecialProgressBarView specialProgressBarView, int max, int progress) {
                return "done";
            }
        });