为什么要绘制柱状图?这是因为在有些应用中需要展示数据,单纯的列出一些数据估计谁看了都会烦,因此数据的展示通常会使用一些图表的形式展现出来。
上面的柱子是怎样绘制的呢?先来梳理一下思路:通过上面的图片展示可以看出来,需要一个白色的背景+一个留有上下边距的矩形区域+顶部空白处的文本+底部空白处的文本+中间的柱形图(实际上是绘制的线,线的画笔给的宽了一点,你也可以采用绘制矩形的方式只是绘制矩形需要左上右下坐标,计算坐标比较麻烦,还是建议采用线条的形式),最后,为了让图表能够滑动,需要将整个自定义view放置到一个HorizontalScrollView上面去(这里为了以后管理的方便性,我创建了一个继承于HorizontalScrollView的class,将柱状图添加到其中放置)。
PS:原谅我底部的“张三”的信息没有调试好位置
相关文章
[ Android 项目(一):自定义View绘制“折线图” ]
可以先参考上面的博客,也可以直接看这篇文章,上面的博客由于绘制比较麻烦,我先写的准备工作,这篇博客由于绘制简单,就直接看如何绘制柱状图了。
一、绘制柱状图
柱状图的绘制直接看代码吧,思路就是上面介绍的。
/**
* Created by Administrator on 2015/10/12.
*/
public class Histogromview extends View {
//view 的宽与高
private int width;
private int heigh;
//单个柱状图的间隔与宽度
private int hisgrom_space;
private int hisgrom_width;
//柱状图上边距和下边距
private int histogrom_topspa;
private int histogrom_bottomspa;
//矩形背景的画笔
private Paint mpaint_bg;
//单个柱子的背景
private Paint mpaint_hisbg;
//单个柱子的颜色
private Paint mpaint_hiscolor;
//文本的画笔
private Paint mapint_text;
private Paint.FontMetrics mMetrics;
//总的数据个数
private int totaldata;
//绘制图形时需要用到的数据,数据在MainActivity中添加,
//Histogrom是Dao模式的数据
private List<Histogrom> mdata=new ArrayList<>();
//两个构造器
public Histogromview(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public Histogromview(Context context) {
super(context);
}
//mdata的set/get方法
public List<Histogrom> getMdata() {
return mdata;
}
public void setMdata(List<Histogrom> mdata) {
this.mdata = mdata;
requestLayout();//相当于调用onMeasure方法<