android之自定义View和ViewGroup(六)(代码篇,实现简单的走势图,柱状图同理)

本文介绍了如何在Android中自定义实现走势图,避免使用第三方框架,详细讲解了绘制x、y轴,刻度,横线,数据点及连线的思路和步骤。通过设置原点坐标、刻度间距等参数,实现简单走势图的绘制。适合需要定制图表功能的开发者参考。
摘要由CSDN通过智能技术生成

项目需要走势图,什么柱状图、走势图,网上都有一堆现成的框架,但是我项目中只需要走势图,我用第三方框架简直是累赘,毕竟占大小,而且走势图也简单,所以就自己写了,好久没写博客了,就记下吧,供大家参考下,其实很简单,大佬勿喷。先不废话,看效果图吧:
这里写图片描述
记录了七天的走势,原点的x坐标不是0,因为我们不是用来做坐标轴,而是记录数据,原点的坐标根据实际需求情况而定的。

好了,废话说完了,开始动手吧,动手之前我们得先想想怎么实现,思路是怎样的。

首先,我们需要知道我们需要画什么。
1.我们需要画x,y轴;
2.我们需要画x,y轴的刻度和刻度值;
3.我们需要画y轴上的每个刻度的横线;
4.我们需要画数据的点;
5.数据的点需要连线;
大致就是这些,还有些文字的大小啊,颜色啊等等,都可以自己设置;

然后,我们需要知道怎么画。
大家都知道在视图坐标系中,一个view,原点是它的左上角,所以我们需要实际的原点,真实的原点,即走势图中x,y轴的交接点。所以我们得先确定实际原点,假设实际原点的坐标是(xo,yo),averageX代表x轴每个刻度间的距离,那图片中x轴的11.2所在的坐标就是相对于原点的(averageX,0),所以实际坐标就是(xo+averageX,yo+0)。那么y轴的1000所在的坐标就是相对于原点的(0,-averageY),所以实际坐标是(0+xo,-averageY+yo)注意,android中,x轴向右为正,y轴向下为正,所以1000所在的坐标是负的。哎,语文没学好,可能表达有点不清楚?总之呢,就是为了确定每个点的算法才这样计算的。

首先,我们自定义View继承自View,然后相关属性:

private Context context;
    //x,y轴的画笔,刻度文字的画笔,数据点的画笔,数据连线的画笔,y轴刻度横线的画笔,数据点文字的画笔
    private Paint xyPaint, textPaint, pointPaint, pointslinePaint, yLinePaint, pointTextPaint;
    private int padding;  //内部距离,设置个默认的padding值
    private int width, height;  //控件实际高度和宽度
    private float xSize, ySize;//x和y轴的长度(因为控件留了内部距离,不然x,y轴就贴着控件边缘导致看不清,有内部距离,所以长度和控件的宽高不一样了)
    private int defaultWidth;  //默认宽度
    private int defaultHeight;  //默认高度
    private int xOrigin, yOrigin;  //相对原点的坐标
    private
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值