Untitled

 avatar
unknown
plain_text
6 months ago
2.3 kB
2
Indexable
package com.example.customprogressbar;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.ProgressBar;

public class CustomProgressBar extends ProgressBar {
    
    private Paint paint;
    private int[] anchorPoints = new int[4]; // 4 điểm neo

    public CustomProgressBar(Context context) {
        super(context);
        init();
    }

    public CustomProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
    }

    // Phương thức để đặt 4 điểm neo
    public void setAnchorPoints(int[] points) {
        if (points.length == 4) {
            this.anchorPoints = points;
            invalidate(); // Yêu cầu vẽ lại
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // Lấy chiều rộng của ProgressBar
        int width = getWidth();
        int height = getHeight();

        // Xác định các điểm neo trên thanh
        int startX = 0;
        int endX = width;

        // Chia các đoạn dựa trên các điểm neo
        int section1 = anchorPoints[0];
        int section2 = anchorPoints[1];
        int section3 = anchorPoints[2];
        int section4 = anchorPoints[3];

        // Vẽ các đoạn màu khác nhau cho mỗi khoảng giữa các điểm neo
        paint.setColor(Color.RED); // Màu đoạn 1
        canvas.drawRect(startX, 0, section1, height, paint);

        paint.setColor(Color.YELLOW); // Màu đoạn 2
        canvas.drawRect(section1, 0, section2, height, paint);

        paint.setColor(Color.GREEN); // Màu đoạn 3
        canvas.drawRect(section2, 0, section3, height, paint);

        paint.setColor(Color.BLUE); // Màu đoạn 4
        canvas.drawRect(section3, 0, section4, height, paint);

        // Vẽ phần còn lại nếu có
        paint.setColor(Color.GRAY);
        canvas.drawRect(section4, 0, endX, height, paint);
    }
}
Editor is loading...
Leave a Comment