美文网首页
2018-11-14 Android 自定义TextView完成

2018-11-14 Android 自定义TextView完成

作者: 我来学习了 | 来源:发表于2018-11-14 10:17 被阅读0次

    自定义TextView 

    public class MyProgressextends AppCompatTextView {

    Paintpaint =new Paint();

        int x ;

        Rectrect;

        public MyProgress(Context context) {

    super(context);

            initView();

        }

    public MyProgress(Context context, @Nullable AttributeSet attrs) {

    super(context, attrs);

            initView();

        }

    public MyProgress(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

    super(context, attrs, defStyleAttr);

            initView();

        }

    public void initView(){

    rect =new Rect();

        }

    @Override

        protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

            paint.setColor(Color.GRAY);

            paint.setStyle(Paint.Style.FILL);

            rect.set(0,0,getMeasuredWidth(),getMeasuredHeight());

            canvas.drawRect(rect,paint);

            paint.setColor(Color.RED);

            if(x !=100){

    canvas.drawRect(0,0,getMeasuredWidth()*x/100, getMeasuredHeight(),paint);

            }else{

    paint.setColor(Color.GREEN);

                canvas.drawRect(0,0,getMeasuredWidth()*x/100, getMeasuredHeight(),paint);

            }

    paint.setColor(Color.WHITE);

            paint.setTextSize(15);

            Paint.FontMetricsInt fontMetrics =paint.getFontMetricsInt();

            int baseline = (rect.bottom +rect.top - fontMetrics.bottom - fontMetrics.top) /2;

            paint.setTextAlign(Paint.Align.CENTER);

            canvas.drawText(x +"%",rect.centerX(),baseline,paint);

        }

    public void setProgress(int x){

    this.x = x;

            invalidate();

        }

    }

    调用的话,自己写个SeekBar测试即可:

    MyProgress  myProgress = (MyProgress) findViewById(R.id.text);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

    @Override

        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

               myProgress.setProgress(i);

        }

    @Override

        public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override

        public void onStopTrackingTouch(SeekBar seekBar) {

    }

    });

    布局文件

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical">

            android:id="@+id/seek_bar"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginTop="20dp"/>

            android:id="@+id/text"

            android:layout_width="200dp"

            android:layout_height="40dp"

            android:layout_marginTop="60dp"

            android:gravity="center"

            android:textColor="@android:color/holo_red_light"

            android:layout_gravity="center"/>

    </LinearLayout>

    截图如下:

    相关文章

      网友评论

          本文标题:2018-11-14 Android 自定义TextView完成

          本文链接:https://www.haomeiwen.com/subject/ybsdfqtx.html