直接先上图看效果
private int wx; private int QQ; private int x = 100; Point pa = new Point(10, 10); Point pb = new Point(20, 40); Point po = new Point(); private String[] kedu = {"0 -", "1000 -", "2000 -", "3000 -", "4000 -", "5000 -", "6000 -"}; private String[] lie = {"微信官方", "支付宝官方", "花呗分期", "网商银行", "平安银行", "第三方", "pos机刷卡"}; public Music(Context context) { super(context); MainActivity.set(); Log.e("11111", MainActivity.set()); } public Music(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public Music(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //这个方法用来传递条形图参数 public void setX(int wx, int QQ) { this.wx = wx; this.QQ = QQ; } @Override protected void onDraw(Canvas canvas) { Log.e("11111", wx + QQ + ""); int width = (getWidth() / 10); int height = getHeight() / 3; Log.e("eeeeeeeee", getWidth() + "``" + getHeight() + "--" + width + "--" + height); Paint paint1 = new Paint(); paint1.setColor(Color.RED); paint1.setTextSize(20); Paint paint = new Paint(); paint.setColor(Color.BLACK); // 画坐标轴 if (canvas != null) { canvas.drawColor(Color.WHITE); // 画直线 canvas.drawLine(width / 2 + 50, 300, width * 8 + width / 2 + 50, 300, paint); canvas.drawLine(width / 2 + 50, 300, width / 2 + 50, 20, paint); // 画X轴箭头 int x = width * 8 + width / 2 + 50, y = 300; drawTriangle(canvas, new Point(x, y), new Point(x - 10, y - 5), new Point(x - 10, y + 5)); canvas.drawText("X", x - 15, y + 18, paint); // 画Y轴箭头 x = width / 2 + 50; y = 20; drawTriangle(canvas, new Point(x, y), new Point(x - 5, y + 10), new Point(x + 5, y + 10)); canvas.drawText("Y", x + 12, y + 15, paint); // 画中心点坐标 // 先计算出来当前中心点坐标的值 // String centerString = "(" + (centerX - po.x) / 2 + "," // + (po.y - centerY) / 2 + ")"; // 然后显示坐标 //canvas.drawText(centerString, centerX - 25, centerY + 15, paint); } if (canvas != null) { /* * TODO 画数据 所有外部需要在坐标轴上画的数据,都在这里进行绘制 */ canvas.drawCircle(po.x + 2 * pa.x, po.y - 2 * pa.y, 2, paint); canvas.drawCircle(po.x + 2 * pb.x, po.y - 2 * pb.y, 2, paint); canvas.drawLine(po.x + 2 * pa.x, po.y - 2 * pa.y, po.x + 2 * pb.x, po.y - 2 * pb.y, paint); //画条形图 for (int i = 0; i < 7; i++) { height = (int) (Math.random() * 300); canvas.drawRect( (float) (90 + width * i + width / 2), height, (float) (width * (i + 1) + width / 2 + 50), 300, paint1 ); if (i == 5) { canvas.drawText(lie[i], (float) (90 + width * i + width / 2 + (width - paint1.measureText(lie[i]) - 40) / 2), 340, paint1); } canvas.drawText(lie[i], (float) (90 + width * i + width / 2 + (width - paint1.measureText(lie[i]) - 40) / 2), 340, paint1); String data = "$" + height + ""; canvas.drawText(data, (float) (90 + width * i + width / 2 + (width - paint1.measureText(data) - 40) / 2), height - 10, paint1); } //画刻度 for (int j = 0; j < 7; j++) { if (j == 0) { canvas.drawText("0", width / 2 - paint.measureText(kedu[j]) + 6 + 50, 300 - j * 40 + 5, paint); } else { canvas.drawText(kedu[j], width / 2 - paint.measureText(kedu[j]) + 6 + 50, 300 - j * 40 + 5, paint); } } // canvas.drawPoint(pa.x+po.x, po.y-pa.y, paint); } } /** * 画三角形 用于画坐标轴的箭头 */ private void drawTriangle(Canvas canvas, Point p1, Point p2, Point p3) { Path path = new Path(); path.moveTo(p1.x, p1.y); path.lineTo(p2.x, p2.y); path.lineTo(p3.x, p3.y); path.close(); Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.FILL); // 绘制这个多边形 canvas.drawPath(path, paint); }