自定义统计表

高中的时候我们有一种统计是在坐标上画几根柱,比重越在柱就越长。这种统计图形怎么来实现的呢?这就是这篇文章目的。

这种图的实现方法其实是很简单的,并不是要我们整体画一个图,只需要画一根长方形就可以了,如果需要n根长方形,就重复画n根,这样,统计图就出来了。直接上代码:

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    for (int i = 0 ;i < mRectCount; i++){
        canvas.drawRect((float)(mWidth * 0.4 / 2 + mRectWidth * i + offset),
                currentHeight,
                (float)(mWidth * 0.4 / 2 + mRectWidth * (i + 1)),
                mRectHeight,
                mPaint);
    }

}
mRectCount是矩形总数,通过drawRect方法画一个矩形,循环画矩形的时候,画矩形的起始位置通过i的倍数拉开距离,不会重叠了。
如果要实时改变统计图的矩形高度的话,还需要一个方法:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mWidth = getWidth();
    mRectHeight = getHeight();
    mRectWidth = (int) (mWidth * 0.6 / mRectCount);
    mLinearGradient = new LinearGradient(0,0,mRectWidth,mRectHeight,Color.YELLOW,Color.BLUE,
            Shader.TileMode.CLAMP);
    mPaint.setShader(mLinearGradient);
}
这个方法会调用onDraw重新绘制矩形。
postInvalidate();
这个方法用来刷新,就是绘制完毕后刷新。我们可以添加一个public方法设置矩形的高度,设置后调用
postInvalidate();方法,就可以达到动态更新啦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值