返回顶部
首页 > 资讯 > 精选 >RecyclerChart的KLine如何绘制
  • 793
分享到

RecyclerChart的KLine如何绘制

2023-07-05 07:07:55 793人浏览 薄情痞子
摘要

本篇内容主要讲解“RecyclerChart的KLine如何绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“RecyclerChart的KLine如何绘制”吧!StockValueFORMat

本篇内容主要讲解“RecyclerChart的KLine如何绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“RecyclerChart的KLine如何绘制”吧!

StockValueFORMatter

绘制主体的 drawChart. 

Mock Bean, Entity数据。

绘制 HighLight

绘制 XAxis

绘制 YAxis,  最大、最小值局部留有 padding

尝试添加缩放, OnScaleGestureListener; Matrix , onTouch .  根据缩放比例,调整 RecyclerChart的 displayNumber, notifyDataChange。

绘制蜡烛图

计算 color, 参照上个Entry的 close大小。 定义 mStockAttrs 里的两种 color值,并且是否 Fill。

画上引线、下引线。

图表的样式跟它所依赖的数据是相对应的,然后就是一个业务数据到Chart数据的一个转化,然后图表依照Chart数据进行绘制即可。这里的YAxis、XAxis、board, HighLight 好些跟之前的都是相通的,部分可以复用;注意一些边界上的处理。

主要是CandleChart的绘制,其实里面的主体逻辑跟之前的BarChart也是类似的;这里看看代码吧:

fun <Y : YAxis> drawStockChart(canvas: Canvas, parent: RecyclerView, yAxis: Y) {  val parentRight = (parent.width - parent.paddingRight).toFloat()  val parentLeft = parent.paddingLeft.toFloat()  val childCount = parent.childCount  for (i in 0 until childCount) {    val child = parent.getChildAt(i)    val stockEntry = child.tag as StockEntry    val rectMain = getStockRectF(child, parent, yAxis, mStockAttrs, stockEntry)    val radius = 1f    val color = if (stockEntry.isRise) mStockAttrs.riseColor else mStockAttrs.downColor    mBarChartPaint.color = color    //todo 注意RTL    drawChart(canvas, rectMain, parent.left.toFloat(), parent.right.toFloat(), radius)    mHighLightLinePaint.color = color    if (stockEntry.mShadowHigh > Math.max(stockEntry.mClose, stockEntry.mOpen)){      drawTopLine(stockEntry.mShadowHigh, canvas, rectMain, yAxis, parent)    }    if (stockEntry.mShadowLow < Math.min(stockEntry.mClose, stockEntry.mOpen)){      drawDownLine(stockEntry.mShadowLow, canvas, rectMain, yAxis, parent)    }  }}

这里包含了主体柱子Chart的绘制,以及上引线、下引线的绘制。

//绘制上引线、下引线private fun drawTopLine(value:Float, canvas: Canvas, rectF: RectF, yAxis: YAxis,  parent: RecyclerView){  canvas.save()  val y = getYPosition(value, parent, yAxis, mStockAttrs)  val x = (rectF.left + rectF.right)/2  if (DecimalUtil.biGorEquals(x, parent.left.toFloat()) && DecimalUtil.smallOrEquals(x, parent.right.toFloat())){  canvas.drawLine(x, rectF.top, x, y, mHighLightLinePaint)  canvas.restore()}}//下引线private fun drawDownLine(value:Float, canvas: Canvas, rectF: RectF, yAxis: YAxis,  parent: RecyclerView){  canvas.save()  val y = getYPosition(value, parent, yAxis, mStockAttrs)  val x = (rectF.left + rectF.right)/2  if (DecimalUtil.bigOrEquals(x, parent.left.toFloat()) && DecimalUtil.smallOrEquals(x, parent.right.toFloat())){  canvas.drawLine(x, rectF.bottom, x, y, mHighLightLinePaint)  canvas.restore()}}

绘制Chart 主体,按照先前的绘制,左右边界的处理。目前还是有些bug, 先处理主逻辑,后续修复吧。

private fun drawChart(canvas: Canvas, rectF: RectF, parentLeft: Float, parentRight: Float, radius: Float) {    // 浮点数的 == 比较需要注意    if (DecimalUtil.smallOrEquals(rectF.right, parentLeft)) {    //continue 会闪,原因是end == parentLeft 没有过滤掉,显示出来柱状图了。    } else if (rectF.left < parentLeft && rectF.right > parentLeft) {    //左边部分滑入的时候,处理柱状图的显示    rectF.left = parentLeft    val path = CanvasUtil.createRectRoundPath(rectF, radius, RoundRectType.TYPE_RIGHT_TOP)    mBarChartPaint.color = mBarChartAttrs.chartEdgeColor    canvas.drawPath(path, mBarChartPaint)    } else if (DecimalUtil.bigOrEquals(rectF.left, parentLeft) && DecimalUtil.smallOrEquals(rectF.right, parentRight)) {    // 中间部分的Item    val path = CanvasUtil.createRectRoundPath(rectF, radius, RoundRectType.TYPE_ALL)    canvas.drawPath(path, mBarChartPaint)    //            canvas.drawRoundRect(rectF, radius, radius, mBarChartPaint);    } else if (DecimalUtil.smallOrEquals(rectF.left, parentRight) && rectF.right > parentRight) {    //右边部分滑出的时候,处理柱状图,文字的显示    val distance = parentRight - rectF.left    rectF.right = rectF.left + distance    val path = CanvasUtil.createRectRoundPath(rectF, radius, RoundRectType.TYPE_LEFT_TOP)    mBarChartPaint.color = mBarChartAttrs.chartEdgeColor    canvas.drawPath(path, mBarChartPaint)    }}

到此,相信大家对“RecyclerChart的KLine如何绘制”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: RecyclerChart的KLine如何绘制

本文链接: https://lsjlt.com/news/350460.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • RecyclerChart的KLine如何绘制
    本篇内容主要讲解“RecyclerChart的KLine如何绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“RecyclerChart的KLine如何绘制”吧!StockValueFormat...
    99+
    2023-07-05
  • 基于RecyclerChart的KLine如何绘制Scale
    这篇文章主要介绍“基于RecyclerChart的KLine如何绘制Scale”,在日常操作中,相信很多人在基于RecyclerChart的KLine如何绘制Scale问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • 基于RecyclerChart的KLine绘制详解
    本章节是KLine的绘制的第二章节,在原来的基础上绘制5、10、20日均线。下面是gif的效果。 其实只是把线性图表的绘制逻辑搬到这边一起,上篇文章提到在一个For循环里处理,减少...
    99+
    2023-03-03
    RecyclerChart KLine绘制 RecyclerChart KLine
  • 基于RecyclerChart的KLine怎么绘制
    本篇内容主要讲解“基于RecyclerChart的KLine怎么绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于RecyclerChart的KLine怎么绘制”吧!下面是gif的效果代码如...
    99+
    2023-07-05
  • 基于RecyclerChart的KLine怎么绘制Volume
    这篇文章主要介绍“基于RecyclerChart的KLine怎么绘制Volume”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于RecyclerChart的KLine怎么绘制Volume”文章能帮...
    99+
    2023-07-05
  • 基于RecyclerChart的KLine绘制Volume实现详解
    目录正文创建AttacheChart YAxisAttache Chart绘制正文 本章节是基于RecyclerChart的KLine 绘制第三章节,底部AttacheChart ...
    99+
    2023-03-03
    RecyclerChart KLine绘制Volume RecyclerChart KLine绘制
  • Android View如何绘制
    上文说道了Android如何测量,但是一个漂亮的控件我只知道您长到哪儿,这当然不行。只需要简单重写OnDraw方法,并在Canvas(画布)对象上调用那根五颜六色的画笔就能够画...
    99+
    2022-06-06
    view Android
  • html5如何绘制图形
    这篇文章主要介绍了html5如何绘制图形,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html5中是怎么实现绘制图形?html5中可以实现绘...
    99+
    2024-04-02
  • css如何绘制checkbox,radio
    这篇文章主要介绍了css如何绘制checkbox,radio,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   <...
    99+
    2024-04-02
  • CSS如何绘制时钟
    这篇文章主要介绍了CSS如何绘制时钟,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. CSS3Gen - CSS3动画生成器CSS3Gen...
    99+
    2024-04-02
  • VB.NET如何绘制图形
    这篇文章主要介绍VB.NET如何绘制图形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.创建Graphics对象VB.NET绘制图形需要指定绘图表面。其中,窗体和所有具有Text属性的控件都可以作为绘制图形的表面。...
    99+
    2023-06-17
  • Qt如何绘制图表
    这篇文章给大家分享的是有关Qt如何绘制图表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 简介使用Qt的charts模块来绘制图表,案例来自Qt自带的demo。charts模块简介:Qt Chars模块提供了一...
    99+
    2023-06-15
  • word如何绘制框图
    绘制框图可以使用Microsoft Word的绘图工具或者使用表格来创建。方法一:使用绘图工具1. 打开Microsoft Word...
    99+
    2023-09-29
    word
  • python如何绘制饼图
    小编给大家分享一下python如何绘制饼图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用法matplotlib.pyplot.pie(x, explo...
    99+
    2023-06-29
  • C#如何绘制时钟
    今天小编给大家分享一下C#如何绘制时钟的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。时钟是这样的一共使用四个控件即可:Win...
    99+
    2023-07-02
  • HTML5 Canvas如何绘制图像
    这篇文章给大家分享的是有关HTML5 Canvas如何绘制图像的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 canvas可以引入图像,它可以用于图片合成或者制作背景等。只要是...
    99+
    2024-04-02
  • HTML5 Canvas如何绘制文本
    这篇文章主要介绍HTML5 Canvas如何绘制文本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   HTML5 Canvas 绘制文本   HTML5 Canvas 可以使用...
    99+
    2024-04-02
  • CSS3如何绘制六边形
    小编给大家分享一下CSS3如何绘制六边形,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!因为很简单,所以先总结一下:使用CSS3绘制六边形主要使用伪类:before...
    99+
    2023-06-08
  • python中如何绘制海龟
    这篇文章给大家分享的是有关python中如何绘制海龟的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用...
    99+
    2023-06-14
  • python如何绘制饼状图
    小编给大家分享一下python如何绘制饼状图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!说明用于表示不同分类的比例,通过弧度大小比较各种分类。pie函数可以绘制...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作