短视频商城系统,Android进度条,自定义进度条,显示百分比

短视频商城系统,Android进度条,自定义进度条,显示百分比

 

1
/**<br> *           自定义进度条<br> * */<br>public class JinDuView extends View {<br>    private Paint mPaint; //画笔<br>    private int canvasHeight; //画板高度<br>    private int canvasWidth; //画板宽度<br>    private int nowNumber = 0; //当前数字<br>    private int maxNumber = 0; //最大数字<br>    public JinDuView(Context context, @Nullable AttributeSet attrs) {<br>        super(context, attrs);<br>        //调用该View方法,这里测试写到这里,使用时 fb 找到控件后调用即可<br>        intoData(70);<br>    }<br>    /**<br>     *动态设置数据<br>     * */<br>    public void intoData(int bigNumber){<br>        maxNumber = bigNumber; //获取最大百分比<br>        thread.start(); //开启线程<br>    }<br>    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)<br>    @Override<br>    protected void onDraw(Canvas canvas) {<br>        super.onDraw(canvas);<br>        //画笔<br>        mPaint = new Paint();<br>        //防锯齿<br>        mPaint.setAntiAlias(true);<br>        //获取画板高度<br>        canvasHeight = getMeasuredHeight();<br>        //获取画板宽度<br>        canvasWidth = getMeasuredWidth();<br>        //设置颜色<br>        mPaint.setColor(Color.GREEN);<br>        //设置宽度-宽度为画板宽度<br>        mPaint.setStrokeWidth(canvasWidth);<br>        //画矩形<br>        //canvas.drawRect(0, 0, canvasWidth, canvasHeight, mPaint);<br>        //画椭圆形<br>        canvas.drawRoundRect(0,0,canvasWidth,canvasHeight,30,30,mPaint);<br>        //设置颜色<br>        mPaint.setColor(Color.BLACK);<br>        //画矩形<br>        // canvas.drawRect(0,0,canvasWidth/100*nowNumber,canvasHeight,mPaint);<br>        //画椭圆形<br>        canvas.drawRoundRect(0,0,canvasWidth/100*nowNumber,canvasHeight,30,30,mPaint);<br>        //设置文字<br>        String str = nowNumber + " %";<br>        //设置模板<br>        Rect rect = new Rect();<br>        //设置字体大小<br>        mPaint.setTextSize(24);<br>        //设置字体颜色<br>        mPaint.setColor(Color.RED);<br>        //将文字模板转移到画笔上,此时画笔的属性代表了该文字的属性<br>        mPaint.getTextBounds(str,0,str.length(),rect);<br>        //画到画板上<br>        canvas.drawText(str,canvasWidth/100*nowNumber+5,canvasHeight/2+rect.height()/2,mPaint);<br>    }<br>    /**<br>     * 结束事件<br>     * */<br>    private void stopThread(){<br>//        这里进行弹窗,附加小知识点:<br>//        问:子线程中能不能吐司?<br>//        答:经源码分析,吐司需要Looper对象,子线程中并没有声明Looper对象,<br>//        所以通过此方法及时添加和解除Looper对象就可以吐司了,奥里给<br>        Looper.prepare();<br>        Toast.makeText(getContext(),"加载完毕",Toast.LENGTH_SHORT).show();<br>        Looper.loop();<br>        //结束线程<br>        thread.stop();<br>    }<br>    /**<br>     * 通过线程来动态设置View达到动画效果<br>     * */<br>    private Thread thread = new Thread(){<br>        @Override<br>        public void run() {<br>            while(true){<br>                try {<br>                    /**如果当前数字小于设置的最大数字就一直加<br>                     * 否则进入结束事件<br>                     * */<br>                    if (nowNumber < maxNumber){<br>                        nowNumber = nowNumber+1;<br>                    }else {<br>                        stopThread();<br>                    }<br>                    /**休息时间*/<br>                    Thread.sleep(70);<br>                } catch (InterruptedException e) {<br>                    e.printStackTrace();<br>                }<br>                /**<br>                 * 刷新界面 - 无需在UI线程,在工作线程即可被调用,invalidate()必须在UI线程<br>                 * */<br>                postInvalidate();<br>            }<br>        }<br>    };<br>}

以上就是 短视频商城系统,Android进度条,自定义进度条,显示百分比,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示