最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
android开发自定义View实现柱状图
时间:2016-08-19 编辑:简简单单 来源:一聚教程网
为了使文章中的代码看起来简洁一点,便于理解一点,我就不把Paint的实例化代码贴出来了,另外提示:本文所有变量都是我定死的,各位可以根据需求来自己设置getset方法.
参数:
private Paint mPaint;//画文字和XY轴的画笔
private Paint mPaintColumn;//画圆柱的画笔
private final float START_X = 200;//Y轴左上角X坐标
private final float START_Y = 200;//Y轴左上角Y坐标
private boolean canLoad = true;//是否开始画图
private float XSpace = 150;//Y轴每个数字间距
private float X;//X轴总长度
private String[] XNames = {"测试1", "测试2", "测试3", "测试4", "测试5"};
private int YCount = 10;//Y轴数值的个数(包括0)
private float YSpace = 100;//Y轴每个数字间距
private float Y;//Y轴总长度
private float Colums;//长方形宽(圆柱)
YHeight = (float) (YHeight + getTxtHeight(mPaint));//这个代码的意思是:将Y轴的值和文字高度加起来,因为文字有高度,如果
不算文字高度,最后一个Y轴的值就会比计划高一点
//获取文字的高
public double getTxtHeight(Paint mPaint) {
Paint.FontMetrics fm = mPaint.getFontMetrics();
return Math.ceil(fm.descent - fm.ascent);
}
关键代码draw:
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
if (canLoad) {
canvas.drawLine(START_X, START_Y, START_X, YHeight + START_Y, mPaint);//Y轴
canvas.drawLine(START_X, YHeight + START_Y, START_X + XWidth, YHeight + START_Y, mPaint);//X轴
float MaxText1000");//这里我知道最长的字为1000,所以这么写,根据不同情况改
float TxtHeight = (float) getTxtHeight(mPaint);//mPaint所画文字的高度
//Y轴上的数值
for (int i = 0; i <= YCount; i++) {
String count = 100 * i + "";
canvas.drawText(count, START_X - MaxTextWidth, YHeight + START_Y - YSpace * i, mPaint);
}
//X轴上的数值
for (int i = 0; i < XNames.length; i++) {
String name = XNames[i];
canvas.drawText(name, START_X + XSpace * (i + 1), YHeight + START_Y + TxtHeight, mPaint);
}
//圆柱和圆柱上面的具体数值
for (int i = 0; i < XNames.length; i++) {
String count = (i + 1) * 100 + "";
canvas.drawRect(START_X + XSpace * (i + 1) - ColumsWidth / 2, START_Y + YHeight - (i + 1) * YSpace, START_X + XSpace * (i + 1) + ColumsWidth / 2, YHeight + START_Y, mPaintColumn);
canvas.drawText(count, ColumsWidth/2+START_X + XSpace * (i + 1) - ColumsWidth / 2, START_Y + YHeight - (i + 1) * YSpace-10, mPaint);
}
}
}
相关文章
- Android开发之自定义Spinner的例子 08-21
- android开发中如何自定义UI模板【图解教程】 08-08
- sora软件价格介绍 02-22
- sora官网入口地址一览 02-22
- Sora生成的视频使用教程 02-22
- 《梦幻西游》元宵灯谜线索答案大全2024 02-22