在compose中的Canvas用kotlin显示多数据波形闪烁的问题

在compose中的Canvas显示多数据波形闪烁的问题:当在Canvas多组记录波形数组时,从第一组开始记录多次显示,如图,当再次回到第一次记录位置再显示时,波形出现闪烁。

原码如下:

复制代码
data class DcWaveForm(
    var bDat: Boolean,
    var isOpenEar:Boolean,
    var count:Int,
    val dat: IntArray = IntArray(20) ,  //220
    var lPoints: Array<Offset> = List(140){Offset(0f,0f)}.toTypedArray(),
    var rPoints: Array<Offset> = List(140){Offset(0f,0f)}.toTypedArray()
) 
复制代码
class MyViewModel : ViewModel() {
    
    var mWaveForm: Array<DcWaveForm> by mutableStateOf(Array(11) {
        DcWaveForm(
            bDat = false,
            isOpenEar = false,
            count = 0,
            dat = IntArray(20) { 0 },
            lPoints = List(140){Offset(0f,0f)}.toTypedArray(),
            rPoints = List(140){Offset(0f,0f)}.toTypedArray()
        )
    })
        var mStartCount by mutableStateOf(0)
           private set
    // 安全访问方法
    fun getWaveFormData(index: Int): DcWaveForm? {
        return mWaveForm.getOrNull(index)
    }

    // 批量更新方法
    fun updateWaveArray(index: Int, block: DcWaveForm.() -> Unit) {
        mWaveForm = mWaveForm.apply {
            getOrNull(index)?.let { data ->
                this[index] = data.apply(block)
            }
        }
    }
    fun updateStartCount(count:Int){
        mStartCount = count
    }
   
}

val viewModel = MyViewModel()

复制代码
pointsLeft和pointsRight前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下:
相关推荐
龚礼鹏几秒前
深入解析 Android Automotive (AAOS) 启动流程与 CarService 核心机制(基于 Android 16 最新源码视角)
android
rosmis7 分钟前
agent各指标定义
android·java·开发语言
mifengxing9 分钟前
Java 集合进阶(一)
java·开发语言·数据结构·复习笔记
爱码小白31 分钟前
importlib模块
开发语言·前端·python
techdashen1 小时前
Go设计取舍之四: map不变时能否并发修改不同value
开发语言·后端·golang
小小小米粒1 小时前
阿姆达尔定律(Amdahl‘s Law)
java·开发语言
知彼解己1 小时前
Java 版本演进
java·开发语言·spring boot
风样滴男人哟1 小时前
PHP特性之反射类ReflectionClass机制
android·开发语言·php
看昭奚恤哭2 小时前
Flutter 布局核心思想
开发语言·javascript·flutter
小孔龙2 小时前
RenderNode 与 DisplayList:Android 硬件加速的绘制记录与复用
android·性能优化