天天看點

自定義SeekBar實作實作進度提示随thum移動

項目需要做一個帶有浮标的seekbar,這個網上的例子不多,我自己也手寫了一個,但不太好用,在網上找了一個例子,但沒有源碼,代碼也缺失很多,我就自己寫好,順便封裝一下,并給出完整Demo。

原創連結:http://blog.csdn.net/u010593680/article/details/50967608

效果圖:

自定義SeekBar實作實作進度提示随thum移動

關鍵代碼:

//設定字型居中顯示
    private void drawText(Canvas canvas) {
        float x = (float) (mCurProgress * mOneProgressWidth);
        float textWidth = mPaint.measureText(mProgressText);
        float textOffset = textWidth / 2;
        if (x + textOffset > mWidth - mThumbOffset) {//超過view的右邊
            float exWidth = x + textOffset - (mWidth - mThumbOffset);
            x -= exWidth;//避免超過右邊
        }
        if (x + mThumbOffset < textOffset) {//超過左邊
            float exWidth = textOffset - (x + mThumbOffset);
            x += exWidth;//避免超過左邊
        }
        canvas.translate(mThumbOffset, 0);
        canvas.drawText(mProgressText, x, mHeight, mPaint);
    }
    //設定顯示的進度位置和字元串
    public void setProgress(int progress, String showText) {
        mCurProgress = progress;
        mProgressText = showText;
        invalidate();
    }
           

使用:

seek=(SeekBarWithFloatText)findViewById(R.id.sbwt_seek);
        seek.setProgress(50);
           

完整Demo: http://download.csdn.net/download/y280903468/9953189

==========================分割線=====================================

我後來優化了代碼,隻用一個Java類完成了這個Demo的所有功能,使用非常友善(點選打開連結)