Andriod 常用的自定义View

在Android开发中,有许多常见的自定义View示例可以帮助开发人员更好地理解和掌握自定义View的实现方法。

通过里面invalidate来刷新图片,可以在setProgress和setData传参作为外面接口调用。这种用法在C#的自定义用户控件中常用到,我相对喜欢这样。

 

下面列举几个常见的自定义View示例:

public class CircularProgressBar extends View {

    private Paint mPaint;
    private RectF mRectF;
    private float mProgress;

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

    private void init() {
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(10);
        mRectF = new RectF();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mRectF.set(0, 0, getWidth(), getHeight());
        canvas.drawArc(mRectF, -90, 360 * mProgress, false, mPaint);
    }

    public void setProgress(float progress) {
        mProgress = progress;
        invalidate();
    }
}

自定义柱状图

public class BarChartView extends View {

    private Paint mPaint;
    private List<Float> mData;

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

    private void init() {
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.FILL);
    }

    public void setData(List<Float> data) {
        mData = data;
        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (mData != null) {
            float barWidth = getWidth() / mData.size();
            for (int i = 0; i < mData.size(); i++) {
                float left = i * barWidth;
                float right = left + barWidth;
                float bottom = getHeight();
                float top = getHeight() - mData.get(i);
                canvas.drawRect(left, top, right, bottom, mPaint);
            }
        }
    }
}

 

posted @ 2025-03-25 15:12  春天又来了  阅读(16)  评论(0)    收藏  举报