android 画图画一条线连接两张图片 能不能贴下效果图看看,,, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.dms.demo;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.Paint.Align;import android.graphics.Paint.FontMetrics;import android.graphics.drawable.BitmapDrawable;import android.view.View;public class ChartView extends View { public int XPoint = 60; // 原点的X坐标 public int YPoint = 580; // 原点的Y坐标 public int XScale = 85; // X的刻度长度 public int YScale = 150; // Y的刻度长度 public int XLength = 456; // X轴的长度 public int YLength = 370; // Y轴的长度 public String[] XLabel; // X的刻度 public String[] YLabel; // Y的刻度 public String[] Data; // 数据 public String Title; // 显示的标题 private Bitmap yellowDot; private Bitmap blueDot; private Rect yellowDotRect; private Rect blueDotRect; private Paint mTextPaint; private Paint mPointPaint; private Paint mbackLinePaint; public ChartView(Context context) { // 行了,改回自定义的了 super(context); } public void SetInfo(String[] XLabels, String[] YLabels, String[] AllData, String strTitle) { XLabel = XLabels; YLabel = YLabels; Data = AllData; Title = strTitle; } @SuppressLint({ "DrawAllocation", "ResourceAsColor" }) @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);// 重写onDraw方法 canvas.drawColor(R.color.blue1);// 设置背景颜色 Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setAntiAlias(true);// 去锯齿 paint.setColor(Color.rgb(245, 131, 69));// 颜色 paint.setStrokeWidth(8); Paint paint1 = new Paint(); paint1.setStyle(Paint.Style.STROKE); paint1.setAntiAlias(true);// 去锯齿 paint1.setColor(Color.DKGRAY); mTextPaint = new Paint(); mTextPaint.setAntiAlias(true); mTextPaint.setColor(Color.WHITE); mTextPaint.setTextSize(25F); mTextPaint.setTextAlign(Align.CENTER); FontMetrics fontMetrics = mTextPaint.getFontMetrics(); // 计算文字高度 float fontHeight = fontMetrics.bottom - fontMetrics.top; mPointPaint = new Paint(); mPointPaint.setStyle(Paint.Style.STROKE); mPointPaint.setAntiAlias(true); mPointPaint.setColor(Color.BLUE); mPointPaint.setStrokeWidth(8); mbackLinePaint = new Paint(); mbackLinePaint.setColor(Color.rgb(45, 119, 206)); this.yellowDot = ((BitmapDrawable) getContext().getResources() .getDrawable(R.drawable.yellow_dot)).getBitmap(); this.blueDot = ((BitmapDrawable) getContext().getResources() .getDrawable(R.drawable.blue_dot)).getBitmap(); this.yellowDotRect = new Rect(0, 0, this.yellowDot.getWidth(), this.yellowDot.getWidth()); this.blueDotRect = new Rect(0, 0, this.blueDot.getWidth(), this.blueDot.getWidth()); // 设置Y轴 float n = 12; Paint mPaint = new Paint(); mPaint.setColor(R.color.bottom_end); // 画背景图片 canvas.drawLine(XPoint, YPoint - YLength, XPoint, YPoint, mPointPaint); // 轴线 for (int i = 0; i * YScale < YLength; i++) { // 刻度 canvas.drawLine(XPoint, YPoint - i * YScale, XPoint + XLength, YPoint - i * YScale, mbackLinePaint); try { canvas.drawText(YLabel[i], XPoint - 32, YPoint - i * YScale + 5, mTextPaint); // 文字 } catch (Exception e) { } } /* * canvas.drawLine(XPoint, YPoint - YLength, XPoint - 3, YPoint - * YLength + 6, paint); // 箭头 *//* * canvas.drawLine(XPoint, YPoint - YLength, XPoint + 3, YPoint - * YLength + 6, mPointPaint); */ // 设置X轴 canvas.drawLine(XPoint, YPoint, XPoint + XLength, YPoint, mPointPaint); // 轴线 for (int i = 0; i * XScale < XLength; i++) { canvas.drawLine(XPoint + i * XScale, YPoint, XPoint + i * XScale, YPoint - 5-YLength, mbackLinePaint); // 刻度 try { canvas.drawText(XLabel[i], XPoint + i * XScale - 10, YPoint + 60, mTextPaint); // 文字 // 数据值 float w = XPoint + i * XScale - yellowDot.getWidth() / 2; float h = YCoord(Data[i]) - yellowDot.getHeight() / 2; if (i > 0 && YCoord(Data[i - 1]) != -999 && YCoord(Data[i]) != -999) // 保证有效数据 canvas.drawLine(XPoint + (i - 1) * XScale, YCoord(Data[i - 1]), XPoint + i * XScale, YCoord(Data[i]), paint); /* * canvas.drawCircle(XPoint + i * XScale, YCoord(Data[i]), 2, * paint); */ canvas.drawBitmap(yellowDot, w, h, paint); canvas.drawText(Data[i], w , h - fontHeight, mTextPaint); } catch (Exception e) { } } /* * canvas.drawLine(XPoint + XLength, YPoint, XPoint + XLength - 6, * YPoint - 3, paint); // 箭头 */canvas.drawLine(XPoint + XLength, YPoint, XPoint + XLength - 6, YPoint + 3, mPointPaint); paint.setTextSize(16); canvas.drawText(Title, 150, 50, mTextPaint); } private int YCoord(String y0) // 计算绘制时的Y坐标,无数据时返回-999 { int y; try { y = Integer.parseInt(y0); } catch (Exception e) { return -999; // 出错则返回-999 } try { return YPoint - y * YScale / Integer.parseInt(YLabel[1]); } catch (Exception e) { } return y; }} android蓝牙通讯问题,调试不报错,直接运行报错??? 如何删除已经部署在android虚拟机上的程序? 请问关于获取字符串 android log信息求解? android 无法屏蔽长按back键 复写listview问题 android怎么定时删除东西 android如何与服务器交互? 后台下载service不停刷新notification造成卡顿死机的问题!! 这种Android弹出框是用什么做的呢? android用Pull解析xml文件有一个equals()的空指针异常,怎么办? 急求!android问题!
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Paint.Align;
import android.graphics.Paint.FontMetrics;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;public class ChartView extends View {
public int XPoint = 60; // 原点的X坐标
public int YPoint = 580; // 原点的Y坐标
public int XScale = 85; // X的刻度长度
public int YScale = 150; // Y的刻度长度
public int XLength = 456; // X轴的长度
public int YLength = 370; // Y轴的长度
public String[] XLabel; // X的刻度
public String[] YLabel; // Y的刻度
public String[] Data; // 数据
public String Title; // 显示的标题
private Bitmap yellowDot;
private Bitmap blueDot;
private Rect yellowDotRect;
private Rect blueDotRect;
private Paint mTextPaint;
private Paint mPointPaint;
private Paint mbackLinePaint; public ChartView(Context context) {
// 行了,改回自定义的了
super(context);
} public void SetInfo(String[] XLabels, String[] YLabels, String[] AllData,
String strTitle) {
XLabel = XLabels;
YLabel = YLabels;
Data = AllData;
Title = strTitle;
} @SuppressLint({ "DrawAllocation", "ResourceAsColor" })
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);// 重写onDraw方法 canvas.drawColor(R.color.blue1);// 设置背景颜色
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);// 去锯齿
paint.setColor(Color.rgb(245, 131, 69));// 颜色
paint.setStrokeWidth(8);
Paint paint1 = new Paint();
paint1.setStyle(Paint.Style.STROKE);
paint1.setAntiAlias(true);// 去锯齿
paint1.setColor(Color.DKGRAY); mTextPaint = new Paint();
mTextPaint.setAntiAlias(true);
mTextPaint.setColor(Color.WHITE);
mTextPaint.setTextSize(25F);
mTextPaint.setTextAlign(Align.CENTER); FontMetrics fontMetrics = mTextPaint.getFontMetrics();
// 计算文字高度
float fontHeight = fontMetrics.bottom - fontMetrics.top; mPointPaint = new Paint();
mPointPaint.setStyle(Paint.Style.STROKE);
mPointPaint.setAntiAlias(true);
mPointPaint.setColor(Color.BLUE);
mPointPaint.setStrokeWidth(8);
mbackLinePaint = new Paint();
mbackLinePaint.setColor(Color.rgb(45, 119, 206));
this.yellowDot = ((BitmapDrawable) getContext().getResources()
.getDrawable(R.drawable.yellow_dot)).getBitmap();
this.blueDot = ((BitmapDrawable) getContext().getResources()
.getDrawable(R.drawable.blue_dot)).getBitmap();
this.yellowDotRect = new Rect(0, 0, this.yellowDot.getWidth(),
this.yellowDot.getWidth());
this.blueDotRect = new Rect(0, 0, this.blueDot.getWidth(),
this.blueDot.getWidth());
// 设置Y轴
float n = 12;
Paint mPaint = new Paint();
mPaint.setColor(R.color.bottom_end);
// 画背景图片
canvas.drawLine(XPoint, YPoint - YLength, XPoint, YPoint, mPointPaint); // 轴线
for (int i = 0; i * YScale < YLength; i++) {
// 刻度
canvas.drawLine(XPoint, YPoint - i * YScale, XPoint + XLength, YPoint - i
* YScale, mbackLinePaint);
try {
canvas.drawText(YLabel[i], XPoint - 32,
YPoint - i * YScale + 5, mTextPaint); // 文字
} catch (Exception e) {
}
}
/*
* canvas.drawLine(XPoint, YPoint - YLength, XPoint - 3, YPoint -
* YLength + 6, paint); // 箭头
*//*
* canvas.drawLine(XPoint, YPoint - YLength, XPoint + 3, YPoint -
* YLength + 6, mPointPaint);
*/
// 设置X轴
canvas.drawLine(XPoint, YPoint, XPoint + XLength, YPoint, mPointPaint); // 轴线
for (int i = 0; i * XScale < XLength; i++) {
canvas.drawLine(XPoint + i * XScale, YPoint, XPoint + i * XScale,
YPoint - 5-YLength, mbackLinePaint); // 刻度
try {
canvas.drawText(XLabel[i], XPoint + i * XScale - 10,
YPoint + 60, mTextPaint); // 文字
// 数据值
float w = XPoint + i * XScale - yellowDot.getWidth() / 2;
float h = YCoord(Data[i]) - yellowDot.getHeight() / 2;
if (i > 0 && YCoord(Data[i - 1]) != -999
&& YCoord(Data[i]) != -999) // 保证有效数据
canvas.drawLine(XPoint + (i - 1) * XScale,
YCoord(Data[i - 1]), XPoint + i * XScale,
YCoord(Data[i]), paint);
/*
* canvas.drawCircle(XPoint + i * XScale, YCoord(Data[i]), 2,
* paint);
*/
canvas.drawBitmap(yellowDot, w, h, paint);
canvas.drawText(Data[i], w , h
- fontHeight, mTextPaint);
} catch (Exception e) {
}
}
/*
* canvas.drawLine(XPoint + XLength, YPoint, XPoint + XLength - 6,
* YPoint - 3, paint); // 箭头
*/canvas.drawLine(XPoint + XLength, YPoint, XPoint + XLength - 6,
YPoint + 3, mPointPaint); paint.setTextSize(16);
canvas.drawText(Title, 150, 50, mTextPaint); } private int YCoord(String y0) // 计算绘制时的Y坐标,无数据时返回-999
{
int y;
try {
y = Integer.parseInt(y0);
} catch (Exception e) {
return -999; // 出错则返回-999
}
try {
return YPoint - y * YScale / Integer.parseInt(YLabel[1]);
} catch (Exception e) {
}
return y;
}
}