前言:前段时间做的工程,自己一个人小打小闹的修改着,代码不完善之处请在评论指出,谢谢!
工程来源:github AndroidCharts:https://github.com/dacer/AndroidCharts
修改:使得BarView可以显示数值和颜色
我的需求:将每间教室的总座位数,空座位数显示在图上
效果图:
代码1: 修改后的BarView.java
package com.androidcharts;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Region;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import java.util.ArrayList;
/**
* Created by Dacer on 11/11/13.
*/
public class BarView extends View {
private ArrayList<Float> percentList;
private ArrayList<Float> targetPercentList;
private ArrayList<Float> AllpercentList;
private ArrayList<Float> AlltargetPercentList;
private Paint textPaint;
private Paint BlankNumPaint;
private Paint AllNumPaint;
private Paint bgPaint;
private Paint fgPaint;
private Paint AllfgPaint;
private Rect rect;
private int barWidth;
// private boolean showSideMargin = true;
private int bottomTextDescent;
private boolean autoSetWidth = true;
private int topMargin;
private int bottomTextHeight;
private int clickarea; //点击坐标轴上的区域的数值
public boolean clickaarea = false;
public String clickroom = null;
private ArrayList<String> bottomTextList;
private ArrayList<String> BlankSeatList;
private ArrayList<String> AllSeatList;
private final int MINI_BAR_WIDTH;
private final int BAR_SIDE_MARGIN;
private final int TEXT_TOP_MARGIN;
private final int TEXT_COLOR = Color.parseColor("#9B9A9B");
private final int NUM_COLOR = Color.parseColor("#1E90FF");
private final int BACKGROUND_COLOR = Color.parseColor("#F6F6F6");
private final int FOREGROUND_COLOR = Color.parseColor("#00FF7F");
private final int AllFOREGROUND_COLOR = Color.parseColor("#AFEEEE");
public interface DeliverRoomListener {
public void DeliverRoom(String classname);
}
private DeliverRoomListener mDeliverRoomListener;
//
public void setRoomClickedListener(DeliverRoomListener listener){
mDeliverRoomListener = listener;
}
private Runnable animator = new Runnable() {
@Override
public void run() {
boolean needNewFrame = false;
for (int i=0; i<targetPercentList.size();i++) {
if (percentList.get(i) < targetPercentList.get(i)) {
percentList.set(i,percentList.get(i)+0.02f);
needNewFrame = true;
} else if (percentList.get(i) > targetPercentList.get(i)){
percentList.set(i,percentList.get(i)-0.02f);
needNewFrame = true;
}
if(Math.abs(targetPercentList.get(i)-percentList.get(i))<0.02f){
percentList.set(i,targetPercentList.get(i));
}
}
i