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); } } } }
浙公网安备 33010602011771号