zoukankan      html  css  js  c++  java
  • Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)

    水平进度条,显示进度的文本随着进度而移动。

    效果如下,截的静态图。

    代码如下 TextProgressBar.java

    
    
    public class TextProgressBar extends ProgressBar {
    
        private Paint mPaint;
        private String text;
        private float rate;
    
        public TextProgressBar(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
            initView();
        }
    
        public TextProgressBar(Context context) {
            super(context);
            initView();
        }
    
        private void initView() {
    
            mPaint = new Paint();
            mPaint.setAntiAlias(true);
            mPaint.setColor(Color.BLUE);
        }
    
        @Override
        public synchronized void setProgress(int progress) {
            setText(progress);
            super.setProgress(progress);
        }
    
        private void setText(int progress) {
            rate = progress * 1.0f / this.getMax();
            int i = (int) (rate * 100);
            this.text = String.valueOf(i) + "%";
        }
    
        @Override
        protected synchronized void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            Rect rect = new Rect();
            mPaint.getTextBounds(text, 0, this.text.length(), rect);
            // int x = (getWidth()/2) - rect.centerX();
            // int y = (getHeight()/2) - rect.centerY();
            int x = (int) (getWidth() * rate);
            if (x == getWidth()) {
                // 如果为百分之百则在左边绘制。
                x = getWidth() - rect.right;
            }
    
            int y = (getHeight() / 2) - rect.top;
            mPaint.setTextSize(22);
            canvas.drawText(text, x, y, mPaint);
        }
    
    }
    
    
    
     

    xml

        <com.example.my_downloader.TextProgressBar 
            android:id="@+id/pgb_percentage"
            android:layout_width="match_parent"
            style="?android:attr/progressBarStyleHorizontal"
            android:max="100"
            android:layout_height="wrap_content"/>
  • 相关阅读:
    postgresql 在linux下导出数据
    第一次linux下安装nginx记录
    第一次搭建redis集群
    手动mvn install指令向maven本地仓库安装jar包
    windows10下Kafka环境搭建
    在win10环境下搭建 solr 开发环境
    git 常用命令
    生成文件夹的树结构信息
    List集合和JSON互转工具类
    Cmd命令 查看端口被占用
  • 原文地址:https://www.cnblogs.com/wliangde/p/3662152.html
Copyright © 2011-2022 走看看