前几天老同学项目需要,要实现柱形图表,我也上网搜索了一下,满满的框架 比如:MPAndroidChart;我想说如果是自己公司的产品,不会让你无脑使用第三方框架吧?! 下面使用自定义view实现柱形图表的需求。
先看下效果图:
先说一下我的思路:
1:画横线,计算横向没i一条线之间的距离:首先如果Y轴如果有7个数值的话(包括单位),那么将height分为 7份+ heighttop, 顶部再加上heightTOP = height/24 , 这个24根据自己的需求调试数值; 那么如下图所示:
2:画竖线,计算竖线每一条线之间的距离:对于X轴来说, 如果有7个数据(包括单位),那么将wight分为8份, 如下图所示
3: 画text信息;需要注意的是 baseLine的计算方法;X轴和Y轴的最后一个单位text,需要将textSize的大小再设置一边;
4:画柱形图:画柱形图是要注意顶部的heightTop数值加进去;
下面是源码类:
package com.app.test.columndiagramproject;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import java.util.List;
/**
* Created by ${liumegnqiang} on 2017/6/16.
*/
public class ColumnView extends View{
private float height;//view高度
private float wight;//view的宽度
private float heightTop;//该view顶部线到top = 0之间距离
private List<String> heightList;//Y轴的信息
private List<String> wightList;//X轴的信息
private float differenceWight;//X轴两条线之间距离
private List<Integer> numberList;//柱形图的数据
private int heightMax ;//Y轴的信息的最大值