今天做项目需要用到简单的横向的柱状图,上网查了一下,没找到合适的框架,于是决定自己动手写一个自定义View,来实现三种柱状图。
那么先看效果图
横向的柱状图,只有柱子的比例和文字。
纵向的柱状图,加上了坐标轴的绘制。
比例式柱状图,只接受长度为2的数组,会自己判断将长的置于背景。
那么我们看一下这个自定义View的代码:
package com.example.day09;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
/**
* Created by Administrator on 2016/11/3.
*/
public class Histogram extends View {
private int[] nums;
private String[] names;
private int[] colors;
private Context context;
private int max = 0;
private int type;
private int wheretext;
private int maxlong;
private int j;
private int width;
private int kong;
private boolean useAnimation;
private Histogram v;
public void setNames(String[] names) {
this.names = names;
}
public void setMax(int max) {
this.max = max;
}
public void setType(int type) {
this.type = type;
}
public void setWheretext(int wheretext) {
this.wheretext = wheretext;
}
public void setMaxlong(int maxlong) {
this.maxlong = maxlong;
}
public void setWidth(int width) {
this.width = width;
}
public void setKong(int kong) {
this.kong = kong;
}
public void setUseAnimation(boolean useAnimation) {
this.useAnimation = useAnimation;
}
public Histogram(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = context;
v = this;
}
public Histogram(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
v = this;
}
public Histogram(Context context) {
super(context);
v = this;
this.context = context;
}
/**
* 初始化柱状图的方法
*
* @param nums 存放每个元素数量的数组
* @param names 存放每个元素文字的数组
* @param colors 存放每个元素使用的颜色的数组
* @param type 定义柱状图的类型 1为横向,2为纵向,其余为比例
* @pa