资源简介
最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动)
代码片段和文件信息
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版源码和Web版源码
- Android之自定义ToggleButton使用
- Android非常漂亮的登录界面
- pc与android通过usb socket实现手机通信
- android毕业设计
- 百度地图自定义Markerandroid
- Android分区工具包
- android-support-v4.jar已打包进去源代码
- u-blox_Android_GNSS_Driver_v3.10驱动源码+中
- 个人根据Android移动开发案例详解手写
- android 视频播放器 项目和原码
- Android【动画】【特效】 17种动画特效
- 基于Android智能家居详细设计(经典)
- android通过JDBC连接Mysql数据库
- Android通讯录的源代码
- android 瀑布流Demo
- 指纹传感器FPC1080在android下的驱动
- delphi xe5 android 调用照相机摄像头拍照
- Android手机连连看游戏源码
- android-sdk-windows v2.3离线完整版
- android 底部弹出菜单(带透明背景)
- Android工程模式简介.rar
- Android蓝牙和Cors网络开发源码
- Android powermanger wakelock
- Android v7的一些jar包
- 最新android supportV7包
- android图片压缩工具类分享
- 单机搭建Android(解决Network is unreach
- Android上监听收到的短信(SMS)
- android电商app源码
评论
共有 条评论