Android 项目(一):自定义View绘制“柱状图”

本文介绍如何在Android项目中自定义View来绘制柱状图,通过HorizontalScrollView实现图表的滑动效果。首先阐述了绘制柱状图的需求和思路,接着详细讲解了绘制过程,包括设置背景、矩形区域、文本以及柱形图的绘制方法。同时,文章提供了自定义HorizontalScrollView的实现,以及在MainActivity中设置数据和调用布局的方法。
摘要由CSDN通过智能技术生成

这里写图片描述
  为什么要绘制柱状图?这是因为在有些应用中需要展示数据,单纯的列出一些数据估计谁看了都会烦,因此数据的展示通常会使用一些图表的形式展现出来。
  上面的柱子是怎样绘制的呢?先来梳理一下思路:通过上面的图片展示可以看出来,需要一个白色的背景+一个留有上下边距的矩形区域+顶部空白处的文本+底部空白处的文本+中间的柱形图(实际上是绘制的线,线的画笔给的宽了一点,你也可以采用绘制矩形的方式只是绘制矩形需要左上右下坐标,计算坐标比较麻烦,还是建议采用线条的形式),最后,为了让图表能够滑动,需要将整个自定义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方法<
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值