资源简介
最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动)
代码片段和文件信息
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
相关资源
- Android前置摄像头预览并检测人脸,获
- android游戏开发,连连看源码
- 基于 MVP 架构使用Android通用开发框架
- 学生信息管理系统 Android源码
- Android电子拍卖系统
- Android自定义播放器的改进版本
- Android猜数字小游戏 源代码
- Android手机摄像头采集图片上传pc显示
- android点击界面产生气泡,气泡效果
- android.support.v7.widget.RecyclerView
- 编写推箱子游戏程序第二步
- 6编写推箱子游戏程序第一步
- Android Http实现文件的上传和
- Android简单的计时器源码
- Android课程设计简单实用课程表项目
- Android音乐播放器结业论文加源码
- Android服务器端交互服务器端源码
- Android-电池信息获取
- Android开发手机相机
- 计算器 实现加减乘除混合运算
- 计算facebook sdk需要的key hashes
- Android的SQlite开发完整demo
- Android自动聚焦、拍照、缩放标准大小
- MPAndroidChart 3.0.1版本jar包
- Android后台开启服务默默拍照
- android串口收发数据
- java 动态获取数据库信息生成word(含
- Android蓝牙聊天项目非常详细
- android手机通讯录的毕业论文
- 基于android系统的文件浏览器
评论
共有 条评论