直播系统开发,实现在进度条中显示文字显示进度
直播系统开发,实现在进度条中显示文字显示进度的相关代码
1 | public class MyProgressBar extends ProgressBar {<br> private String mText;<br> private Paint mPaint;<br> private int remain;<br> public MyProgressBar(Context context) {<br> super (context);<br> initText();<br> }<br> public MyProgressBar(Context context, AttributeSet attrs) {<br> super (context, attrs);<br> initText();<br> }<br> public MyProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {<br> super (context, attrs, defStyleAttr);<br> initText();<br> }<br> @Override <br> public synchronized void setProgress( int progress) {<br> setText(progress);<br> super .setProgress(progress);<br> }<br> @Override <br> protected synchronized void onDraw(Canvas canvas) {<br> super .onDraw(canvas);<br> Rect rect = new Rect();<br> this .mPaint.getTextBounds( this .mText, 0 , this .mText.length(), rect);<br> int x = (getWidth() / 2 ) - rect.centerX();<br> int y = (getHeight() / 2 ) - rect.centerY();<br> canvas.drawText( this .mText, x, y, this .mPaint);<br> }<br> private void initText(){<br> this .mPaint = new Paint();<br> this .mPaint.setColor(Color.WHITE);<br> this .mPaint.setAntiAlias( true );<br> this .mPaint.setTextSize( 34 .f);<br> }<br> private void setText( int progress){<br> int i = (progress * 100 )/ this .getMax();<br> this .mText = String.valueOf(i) + "%(" +getRemain()+ " remaining)" ;<br> }<br> public int getRemain() {<br> return remain;<br> }<br> public void setRemain( int remain) {<br> this .remain = remain;<br> }<br>} |
首先讲讲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
1 | mPaint = new Paint(); //初始化<br> mPaint.setColor(Color.RED);//设置颜色<br> mPaint.setARGB(255,255,255,0);//设置paint对象颜色,范围0~255<br> mPaint.setAlpha(200);//设置透明度 范围0~255<br> mPaint.setAntiAlias(true);//设置抗锯齿<br> mPaint.setStyle(Paint.Style.STROKE);//设置描边效果STROKE(描边) FILL(填充) 和FILL_AND_STROKE(同时作用)<br> mPaint.setStrokeWidth(4);//设置描边宽度<br> mPaint.setStrokeCap(Paint.Cap.ROUND);//设置圆角效果 BUTT(默认) ROUND(圆角) SQUARE(方形)<br> mPaint.setStrokeJoin(Paint.Join.MITER);//设置拐角风格 MITER(默认) ROUND(圆角填充) BEVEL(切除)<br> mPaint.setShader(new SweepGradient(200,200,Color.BLUE,Color.RED));//设置环形渲染器(着色器)<br> mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));//设置图层混合模式<br> mPaint.setColorFilter(new LightingColorFilter(0x00ffff,0x000000));//设置颜色过滤器<br> mPaint.setFilterBitmap(true);//设置双线性过滤<br> mPaint.setMaskFilter(new BlurMaskFilter(10,BlurMaskFilter.Blur.NORMAL));//设置画笔遮罩滤镜,传入度数和样式<br> mPaint.setTextScaleX(2);//设置文本缩放倍数 默认是1<br> mPaint.setTextSize(38);//设置字体大小<br> mPaint.setTextAlign(Paint.Align.LEFT);//设置对其方式<br> mPaint.setUnderlineText(true);//设置下划线<br> String str="Paint测试效果";<br> Rect rect = new Rect();<br> mPaint.getTextBounds(str,0,str.length(),rect);//测量文本大小,将文本大小信息存放在rect中<br> mPaint.measureText(str);//获取文本的宽<br> mPaint.getFontMetrics();//获取字体度量对象 |
以上就是直播系统开发,实现在进度条中显示文字显示进度的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现