自定义view-绘制统计图

xiaoxiao2021-02-28  36

效果图如下:

主要代码:

public class MyTestView extends View { private Paint mPaint; private static final String title = "2013-2017上半年的销售情况"; private static final String content = "来自公司销售的统计数据"; public MyTestView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // TODO Auto-generated constructor stub } public MyTestView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyTestView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint=new Paint(); mPaint.setColor(Color.BLACK); mPaint.setTextSize(18); //绘制标题 canvas.drawText(title, 20,20, mPaint); canvas.drawText("单位:万元", 20,90, mPaint); mPaint.setTextSize(10); //绘制线 canvas.drawLine(50, 100, 50, 500, mPaint);//纵坐标 canvas.drawLine(50, 500, 400, 500, mPaint);//横坐标 //纵坐标的值 int[] array = { 0, 50, 100, 150, 200, 250, 300, 350 }; for(int i=0;i<array.length;i++){ //首先绘制分割线 canvas.drawLine(50, 500-array[i], 54, 500-array[i], mPaint); //绘制值 canvas.drawText(array[i]+"", 20, 500-array[i], mPaint); } //横坐标 String[] array2 = { "2008年", "2009年", "2010年", "2011上半年" }; for(int i=0;i<array2.length;i++){ canvas.drawText(array2[i]+"", array[i]+85, 520, mPaint); } mPaint.setColor(Color.BLUE); mPaint.setStyle(Style.FILL); canvas.drawRect(new Rect(90, 500 - 56, 110, 500), mPaint); canvas.drawRect(new Rect(140, 500 - 98, 160, 500), mPaint); canvas.drawRect(new Rect(190, 500 - 207, 210, 500), mPaint); canvas.drawRect(new Rect(240, 500 - 318, 260, 500), mPaint); mPaint.setColor(Color.BLACK); canvas.drawText("56.32", 88, 500 - 58, mPaint); canvas.drawText("90.00", 138, 500 - 100, mPaint); canvas.drawText("207.67", 188, 500 - 209, mPaint); canvas.drawText("318.56", 238, 500 - 320, mPaint); mPaint.setColor(Color.BLACK); mPaint.setTextSize(16); canvas.drawText(content, 20, 560, mPaint); } }

转载请注明原文地址: https://www.6miu.com/read-38981.html

最新回复(0)