直播系統開發,實現在進度條中顯示文字顯示進度

zhibo系統開發發表於2021-11-22

直播系統開發,實現在進度條中顯示文字顯示進度的相關程式碼

public class MyProgressBar extends ProgressBar {
    private String mText;
    private Paint mPaint;
    private int remain;
    public MyProgressBar(Context context) {
        super(context);
        initText();
    }
    public MyProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        initText();
    }
    public MyProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initText();
    }
    @Override
    public synchronized void setProgress(int progress) {
        setText(progress);
        super.setProgress(progress);
    }
    @Override
    protected synchronized void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Rect rect = new Rect();
        this.mPaint.getTextBounds(this.mText, 0, this.mText.length(), rect);
        int x = (getWidth() / 2) - rect.centerX();
        int y = (getHeight() / 2) - rect.centerY();
        canvas.drawText(this.mText, x, y, this.mPaint);
    }
    private void initText(){
        this.mPaint = new Paint();
        this.mPaint.setColor(Color.WHITE);
        this.mPaint.setAntiAlias(true);
        this.mPaint.setTextSize(34.f);
    }
    private void setText(int progress){
        int i = (progress * 100)/this.getMax();
        this.mText = String.valueOf(i) + "%("+getRemain()+" remaining)";
    }
    public int getRemain() {
        return remain;
    }
    public void setRemain(int remain) {
        this.remain = remain;
    }
}

首先講講Android的Rect類的使用:

構造方法:

Public Constructors

Rect ()

Create a new empty Rect.

Rect(int left, int top, int right, int bottom)

Create a new rectangle with the specified coordinates.

Rect ( Rect r)

Create a new rectangle, initialized with the values in the specified rectangle (which is left unmodified).

常用方法:

final int centerX () //獲取矩陣中心點(x,y)

Paint物件在開發過程中經常會用到,先看下Paint的常用Api

  mPaint = new Paint();//初始化
        mPaint.setColor(Color.RED);//設定顏色
        mPaint.setARGB(255,255,255,0);//設定paint物件顏色,範圍0~255
        mPaint.setAlpha(200);//設定透明度 範圍0~255
        mPaint.setAntiAlias(true);//設定抗鋸齒
        mPaint.setStyle(Paint.Style.STROKE);//設定描邊效果STROKE(描邊) FILL(填充) 和FILL_AND_STROKE(同時作用)
        mPaint.setStrokeWidth(4);//設定描邊寬度
        mPaint.setStrokeCap(Paint.Cap.ROUND);//設定圓角效果  BUTT(預設) ROUND(圓角) SQUARE(方形)
        mPaint.setStrokeJoin(Paint.Join.MITER);//設定拐角風格  MITER(預設) ROUND(圓角填充) BEVEL(切除)
        mPaint.setShader(new SweepGradient(200,200,Color.BLUE,Color.RED));//設定環形渲染器(著色器)
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));//設定圖層混合模式
        mPaint.setColorFilter(new LightingColorFilter(0x00ffff,0x000000));//設定顏色過濾器
        mPaint.setFilterBitmap(true);//設定雙線性過濾
        mPaint.setMaskFilter(new BlurMaskFilter(10,BlurMaskFilter.Blur.NORMAL));//設定畫筆遮罩濾鏡,傳入度數和樣式
        mPaint.setTextScaleX(2);//設定文字縮放倍數  預設是1
        mPaint.setTextSize(38);//設定字型大小
        mPaint.setTextAlign(Paint.Align.LEFT);//設定對其方式
        mPaint.setUnderlineText(true);//設定下劃線
        String str="Paint測試效果";
        Rect rect = new Rect();
        mPaint.getTextBounds(str,0,str.length(),rect);//測量文字大小,將文字大小資訊存放在rect中
        mPaint.measureText(str);//獲取文字的寬
        mPaint.getFontMetrics();//獲取字型度量物件

以上就是直播系統開發,實現在進度條中顯示文字顯示進度的相關程式碼, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2843421/,如需轉載,請註明出處,否則將追究法律責任。

相關文章