短視訊商城系統,Android進度條,自定義進度條,顯示百分比

zhibo系統開發發表於2022-06-21

短視訊商城系統,Android進度條,自定義進度條,顯示百分比

/**
 *           自定義進度條
 * */
public class JinDuView extends View {
    private Paint mPaint; //畫筆
    private int canvasHeight; //畫板高度
    private int canvasWidth; //畫板寬度
    private int nowNumber = 0; //當前數字
    private int maxNumber = 0; //最大數字
    public JinDuView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        //呼叫該View方法,這裡測試寫到這裡,使用時 fb 找到控制元件後呼叫即可
        intoData(70);
    }
    /**
     *動態設定資料
     * */
    public void intoData(int bigNumber){
        maxNumber = bigNumber; //獲取最大百分比
        thread.start(); //開啟執行緒
    }
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //畫筆
        mPaint = new Paint();
        //防鋸齒
        mPaint.setAntiAlias(true);
        //獲取畫板高度
        canvasHeight = getMeasuredHeight();
        //獲取畫板寬度
        canvasWidth = getMeasuredWidth();
        //設定顏色
        mPaint.setColor(Color.GREEN);
        //設定寬度-寬度為畫板寬度
        mPaint.setStrokeWidth(canvasWidth);
        //畫矩形
        //canvas.drawRect(0, 0, canvasWidth, canvasHeight, mPaint);
        //畫橢圓形
        canvas.drawRoundRect(0,0,canvasWidth,canvasHeight,30,30,mPaint);
        //設定顏色
        mPaint.setColor(Color.BLACK);
        //畫矩形
        // canvas.drawRect(0,0,canvasWidth/100*nowNumber,canvasHeight,mPaint);
        //畫橢圓形
        canvas.drawRoundRect(0,0,canvasWidth/100*nowNumber,canvasHeight,30,30,mPaint);
        //設定文字
        String str = nowNumber + " %";
        //設定模板
        Rect rect = new Rect();
        //設定字型大小
        mPaint.setTextSize(24);
        //設定字型顏色
        mPaint.setColor(Color.RED);
        //將文字模板轉移到畫筆上,此時畫筆的屬性代表了該文字的屬性
        mPaint.getTextBounds(str,0,str.length(),rect);
        //畫到畫板上
        canvas.drawText(str,canvasWidth/100*nowNumber+5,canvasHeight/2+rect.height()/2,mPaint);
    }
    /**
     * 結束事件
     * */
    private void stopThread(){
//        這裡進行彈窗,附加小知識點:
//        問:子執行緒中能不能吐司?
//        答:經原始碼分析,吐司需要Looper物件,子執行緒中並沒有宣告Looper物件,
//        所以通過此方法及時新增和解除Looper物件就可以吐司了,奧裡給
        Looper.prepare();
        Toast.makeText(getContext(),"載入完畢",Toast.LENGTH_SHORT).show();
        Looper.loop();
        //結束執行緒
        thread.stop();
    }
    /**
     * 通過執行緒來動態設定View達到動畫效果
     * */
    private Thread thread = new Thread(){
        @Override
        public void run() {
            while(true){
                try {
                    /**如果當前數字小於設定的最大數字就一直加
                     * 否則進入結束事件
                     * */
                    if (nowNumber < maxNumber){
                        nowNumber = nowNumber+1;
                    }else {
                        stopThread();
                    }
                    /**休息時間*/
                    Thread.sleep(70);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                /**
                 * 重新整理介面 - 無需在UI執行緒,在工作執行緒即可被呼叫,invalidate()必須在UI執行緒
                 * */
                postInvalidate();
            }
        }
    };
}


以上就是 短視訊商城系統,Android進度條,自定義進度條,顯示百分比,更多內容歡迎關注之後的文章


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

相關文章