安卓图表------为github开源控件MPAndroidChart 添加横参考线

1:MPAndroidChart  github地址:https://github.com/PhilJay/MPAndroidChart

要用图表的控件,就在github上找了一下,感觉MPAndroidChart 好看点。。。其他的个人觉得美观角度上,我不能接受。其实 MPAndroidChart......也不好看。。。尴尬

我需要用到画参考线。。但是没找到方法(或许有,我没找到)      只好自己添加这个方法,先看效果


5,10附近就是添加了两条血糖正常值参考线(绿色虚线)

额,给还没找到添加位置的同学。。。提示一下。。

1.先添加相关方法,属性

在BarLineChartBase类中添加以下代码

 //以下是添加的画参考线
    private boolean isDrawRefYLine=false;//是否画参考线

    public void setDrawRefYLine(boolean isDrawRefYLine) {
        this.isDrawRefYLine = isDrawRefYLine;
    }

    private float[] rYs;//y参考值
    private int[] ryColors;//参考线的颜色
    public void setRef(float[] values,int[] colors){
        rYs=values;
        ryColors=colors;
    }
    //画横坐标参考线
    private void darwRefYLine(){
        if(rYs==null||rYs.length<=0) return;
        //保存paint初始参数
        int initColor=mGridPaint.getColor();
        float initWidth=mGridPaint.getStrokeWidth();
        PathEffect initPe=mGridPaint.getPathEffect();
        mGridPaint.setStrokeWidth(4f);
        PathEffect effects = new DashPathEffect(new float[] { 8, 8}, 1);
        mGridPaint.setPathEffect(effects);

        int len=rYs.length;
        if(ryColors==null||ryColors.length<2){
            ryColors=new int[]{Color.RED,Color.RED};
        }
        int colLen=ryColors.length;
        float[] position = new float[2];

        //获取最大最小值
        float min=mYLabels.mEntries[0];
        float max=mYLabels.mEntries[mYLabels.mEntries.length-1];

        for(int i=0;i<len;i++){
            position[1] = rYs[i];
            if(position[1]>=min&&position[1]<=max){//在最大最小值间才画
                mTrans.pointValuesToPixel(position);
                mGridPaint.setColor(ryColors[i%colLen]);
                mDrawCanvas.drawLine(mOffsetLeft, position[1], getWidth() - mOffsetRight, position[1],
                        mGridPaint);
            }
        }
        //还原
        mGridPaint.setColor(initColor);
        mGridPaint.setStrokeWidth(initWidth);
        mGridPaint.setPathEffect(initPe);
    }

2最后画网格线中添加上述的代码的调用

 protected void drawHorizontalGrid() {

       //。。。。省略
        //画参考线
        if(isDrawRefYLine){
            darwRefYLine();
        }

    }
//使用
int[] colors=new int[]{XtHpler.COLOR_GREEN,XtHpler.COLOR_GREEN};
chart.setRef(new float[]{4.4f,6.9f},colors);
chart.setDrawRefYLine(true);//启用




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值