• 大小: 19KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: Java
  • 标签: Android  柱状图  滑动  

资源简介

最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动)

资源截图

代码片段和文件信息

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; // 标注的高度
private float marginTop; // 与顶部留的空隙
private float marginBottom = 0; // 与底部留的空隙
private float marginLeft; // 与顶部留的空隙
private float marginRight = 0; // 与底部留的空隙

private int horizontalNum = 5;// 横坐标数量

private RectF coordinateRect = new RectF(); // 画图区域

private int colorCoordinates = 0xFF999999; // 坐标轴的颜色

private int[] colors = { 0xFF4A94F2 0xFFEE5755 0xFFF27744 }; // 柱子的颜色
private int yIndex = 5; // Y轴位置
private List> yRawData = new ArrayList<>();

private int priceWeight = 1; // 倍数

/**
 * 横坐标值
 */
private List xRawDatas = new ArrayList<>();

private String company = ““; // 单位
private boolean isCompanyUpdate = false; // 单位
private String companyNews; // 单位
private List tagging = new ArrayList<>(); // 标注
private List taggingCoordinates = new ArrayList<>(); // 标注的坐标

private int offsetWidth = 0;
private int offsetWidthMax = 0;
private GestureDetector mGestureDetector;
private boolean isInteger = false;// 是否是整数坐标
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

评论

共有 条评论