android曲线图的绘制

本文介绍如何在Android应用中实现曲线图的绘制,通过自定义View进行图形渲染,分享个人实践过程和经验,同时提供了一个Demo链接供参考,期待交流优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在自己的开发中遇到一个画曲线的需求,就自己尝试画了一下,可能有点杂乱,欢迎提出改进建议

package zhichi.chartmaster;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;

import java.util.ArrayList;
import java.util.List;



/**
 * Created by Administrator on 2017/2/15.
 */
public class LineChartView extends CharterBase {
    private onSelectClick onSelectClick;

    public void setOnSelectClick(onSelectClick onSelectClick) {
        this.onSelectClick = onSelectClick;
    }
    private int xo;//圆点x坐标
    private int yo;//圆点y坐标
    private int topBound;//上边界的高度
    private int firstX;//第一个点x坐标
    private int minSlideX;//在移动时,第一个点允许最小的x坐标
    private int maxSlideX;//在移动时,第一个点允许允许最大的x坐标
    private int interval;//坐标间的间隔
    float startX=0;//滑动时候,上一次手指的x坐标

    //单位文字
    private String unitText="";

    public String getUnitText() {
        return unitText;
    }

    public void setUnitText(String unitText) {
        this.unitText = unitText;
    }

    //是否有阴影
    private boolean IsShadow=false;
    //控件宽度
    private int width;
    //控件高度
    private int height;
    //X轴刻度数
    private int XScaleNumber=8;

    //虚线的画笔
    private Paint effectPaint;

    //日期的画笔
    private Paint datePaint;
    //日期线的宽度
    private float dateLineWith=dipToPx(0.6f);
    //日期背景的颜色
    private int dateLineColor = Color.parseColor("#f2f2f2");

    //折线颜色
    private int baseLineColor;
    //折线路径
    private Path baseLinePath;
    //折线画笔
    private Paint baseLinePaint;
    //折线的宽度
    private float baseLineWith = dipToPx(0.8f);
    //折线下的阴影的画笔
    private Paint baseShadow;

    //圆圈点的画笔
    private Paint circlePaint;

    //折线的弯曲率
    private float smoothness=0.35f;
    //坐标点的集合
    private List<PointF> points=new ArrayList<>();
    //选中的坐标点
    private int selectPoint = -1;

    //文字的画笔
    private Paint textPaint;
    //文字的大小
    private float textSize=dipToPx(12);
    //文字的颜色
    private int textColor= Color.parseColor("#666666");

    //背景颜色
    private int bg=Color.parseColor("#fa6049");

    public int getSelectPoint() {
        return selectPoint;
    }

    public void setSelectPoint(int selectPoint) {
        this.selectPoint = selectPoint;
        invalidate();
    }

    public int getXScaleNumber() {
        return XScaleNumber;
    }

    public void setXScaleNumber(int XScaleNumber) {
        this.XScaleNumber = XScaleNumber
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值