直播系统开发,实现在进度条中显示文字显示进度

直播系统开发,实现在进度条中显示文字显示进度的相关代码

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();//获取字体度量对象

​以上就是直播系统开发,实现在进度条中显示文字显示进度的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示