資源簡介
最近自己改進(jìn)了一下柱狀圖的繪制,支持多跟柱子,自己設(shè)置顏色,并且添加了手動滑動效果(在屏幕繪制寬度不夠時啟動滑動)
代碼片段和文件信息
package?com.yulu.demo;
import?java.text.DecimalFormat;
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.List;
import?android.content.Context;
import?android.graphics.Canvas;
import?android.graphics.Color;
import?android.graphics.Paint;
import?android.graphics.Paint.Align;
import?android.graphics.Paint.style;
import?android.graphics.RectF;
import?android.support.annotation.ColorInt;
import?android.util.AttributeSet;
import?android.view.GestureDetector;
import?android.view.MotionEvent;
import?android.view.View;
/**
?*?柱狀??
?*/
public?class?BarChartView?extends?View?{
/**
?*?公共部分
?*/
protected?float?canvasHeight;
protected?float?canvasWidth;
private?Paint?mPaint;
private?float?maxValue?=?0;//?Y軸最大值
private?float?minValue;
//?private?float?titleHeight?=?0.0f;
private?float?taggingHeight;?//?標(biāo)注的高度
private?float?marginTop;?//?與頂部留的空隙
private?float?marginBottom?=?0;?//?與底部留的空隙
private?float?marginLeft;?//?與頂部留的空隙
private?float?marginRight?=?0;?//?與底部留的空隙
private?int?horizontalNum?=?5;//?橫坐標(biāo)數(shù)量
private?RectF?coordinateRect?=?new?RectF();?//?畫圖區(qū)域
private?int?colorCoordinates?=?0xFF999999;?//?坐標(biāo)軸的顏色
private?int[]?colors?=?{?0xFF4A94F2?0xFFEE5755?0xFFF27744?};?//?柱子的顏色
private?int?yIndex?=?5;?//?Y軸位置
private?List>?yRawData?=?new?ArrayList<>();
private?int?priceWeight?=?1;?//?倍數(shù)
/**
?*?橫坐標(biāo)值
?*/
private?List?xRawDatas?=?new?ArrayList<>();
private?String?company?=?““;?//?單位
private?boolean?isCompanyUpdate?=?false;?//?單位
private?String?companyNews;?//?單位
private?List?tagging?=?new?ArrayList<>();?//?標(biāo)注
private?List?taggingCoordinates?=?new?ArrayList<>();?//?標(biāo)注的坐標(biāo)
private?int?offsetWidth?=?0;
private?int?offsetWidthMax?=?0;
private?GestureDetector?mGestureDetector;
private?boolean?isInteger?=?false;//?是否是整數(shù)坐標(biāo)
private?float?cutoffwidth?=?0;
public?BarChartView(Context?context?List?tagging
List?xRawData?List...?yRawData)?{
super(context);
initView();
setData(tagging?xRawData?yRawData);
}
public?BarChartView(Context?context?AttributeSet?attrs)?{
super(context?attrs);
initView();
}
private?void?initView()?{
setWillNotDraw(false);
this.mPaint?=?new?Paint(Paint.ANTI_ALIAS_FLAG);
marginBottom?=?dip2px(25);
marginLeft?=?dip2px(45);
marginRight?=?dip2px(10);
marginTop?=?dip2px(10);
taggingHeight?=?0;
mGestureDetector?=?new?GestureDetector(getContext()
new?GestureListener());
}
private?float?mDownPosX?=?0;
private?float?mDownPosY?=?0;
@Override
public?boolean?dispatchTouchEvent(MotionEvent?event)?{
if?(offsetWidthMax?!=?0)?{
final?float?x?=?event.getX();
final?float?y?=?event.getY();
final?int?action?=?event.getAction();
switch?(action)?{
case?MotionEvent.ACTION_DOWN:
mDownPosX?=?x;
mDownPosY?=?y;
break;
case?MotionEvent.ACTION_MOVE:
fin
評論
共有 條評論