基于RecyclerChart的KLine绘制详解

 更新时间:2023年03月03日 08:30:00   作者:cxy107750  
这篇文章主要为大家详细介绍了基于RecyclerChart实现KLine绘制的相关资料,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

本章节是KLine的绘制的第二章节,在原来的基础上绘制5、10、20日均线。下面是gif的效果。

其实只是把线性图表的绘制逻辑搬到这边一起,上篇文章提到在一个For循环里处理,减少遍历,之前是通过Entry的Y值找对应的PointF的Y值,这里需要用StockEntry中的5日、10日、20日均线值去求值。就是类似的一些逻辑替换,思想还是不变,然后左右边界的处理暂时先放一放,滑动到边界会有一些bug。

同时,这里的均值没有参与到图表YAxis的Max、min的计算中去,会有线出上下边界的情况,待修复。

整体的绘制思想还是比较简单的,代码如下:

然后就是5/10/20均线点的绘制,这里值最好Server返回,或者计算好存入数据库,然后图表每次绘制时从数据库里读取数据。所以这三个值,跟绘制没有关联。

用一个滑动窗口的管理类,外加一个队列,在原来的一次遍历的基础上处理完:

    var queue:Queue<Float> = LinkedList()
    var sum:Float = 0f
    fun queueAddItem(value:Float){
        queue.offer(value)
        sum += value
    }
    fun queueRemoveItem(){
       val value = queue.poll()
        value?.let {
            sum -= value
        }
    }
    fun getAvg(type:Int, value: Float): Float{
        queueAddItem(value)
        val count = queue.size
        if (count < type){
            return value
        }else if (count == type){
            val avg = sum/count
            queueRemoveItem()
            return avg
        }
        return -1f
    }
}

接下来会处理底部的成交量图以及其它的一些底部图表;之前的方式是通过两个Chart表的联动处理,看见网上有MPChartAndroid的类似的也是这样处理的。绘制均线的过程中想到为什么不一起画呢?同样可以在上面的那个for循环里一起画了,然后就不存在两表的联动问题了。只不过多了一个工作就是,需要处理两个YAxis,同时,底部点YAxis也要实时地计算Max、Min, 然后联动图表。

再就是缩放,上一章节提到的,其实只需缩放后,按比例计算当下的DisplayNumber,然后再invalidate(), 这里的话就是Adapter.notifyDatachange()应该就Okay了,本章节暂时先到此。

到此这篇关于基于RecyclerChart的KLine绘制详解的文章就介绍到这了,更多相关RecyclerChart KLine内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java的Synchronized关键字学习指南(全面 & 详细)

    Java的Synchronized关键字学习指南(全面 & 详细)

    这篇文章主要给大家介绍了关于Java的Synchronized关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java如何连接数据库图文教程

    Java如何连接数据库图文教程

    关于java数据库的文章早已是非常多了,本文是对我个人过往学习java数据库,理解及应用java数据库的一个总结,下面这篇文章主要给大家介绍了关于Java如何连接数据库的相关资料,需要的朋友可以参考下
    2023-04-04
  • MyBatis-plus实现逆向生成器

    MyBatis-plus实现逆向生成器

    本文主要介绍了MyBatis-plus实现逆向生成器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • java双色球机选法程序解析

    java双色球机选法程序解析

    这篇文章主要为大家详细解析了java双色球机选法程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • Java设计模式之接口隔离原则精解

    Java设计模式之接口隔离原则精解

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。本篇介绍设计模式七大原则之一的接口隔离原则
    2022-02-02
  • java中InputStream获取字节大小相关方法详解

    java中InputStream获取字节大小相关方法详解

    这篇文章主要给大家介绍了关于java中InputStream获取字节大小相关方法的相关资料,在Java中要实现读取文件大小,可以使用InputStream来读取文件的内容,并通过获取读取的字节数来得到文件的大小,需要的朋友可以参考下
    2023-11-11
  • 一文带你了解Java选择排序的原理与实现

    一文带你了解Java选择排序的原理与实现

    选择排序:(Selection sort)是一种简单直观的排序算法,也是一种不稳定的排序方法。本文主要为大家介绍一下选择排序的原理与实现,希望对大家有所帮助
    2022-11-11
  • java中的hashCode方法小例子

    java中的hashCode方法小例子

    这篇文章主要介绍了java中的hashCode方法小例子,有需要的朋友可以参考一下
    2013-12-12
  • Java中POST、GET、@RequestBody和@RequestParam区别详析

    Java中POST、GET、@RequestBody和@RequestParam区别详析

    在前后端传json数据进行交互的时候,同学们会经常用到的两个注解,@RequestBody和@RequestParam主要是用来接收前端传给后端的json数据,下面这篇文章主要给大家介绍了关于Java中POST、GET、@RequestBody和@RequestParam区别的相关资料,需要的朋友可以参考下
    2022-10-10
  • Springboot应用中Mybatis输出SQL日志的3种方法代码示例

    Springboot应用中Mybatis输出SQL日志的3种方法代码示例

    在前台请求数据的时候,sql语句一直都是打印到控制台的,有一个想法就是想让它打印到日志里,该如何做呢?这篇文章主要给大家介绍了关于Springboot应用中Mybatis输出SQL日志的3种方法,需要的朋友可以参考下
    2024-01-01

最新评论