在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前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下:
相关推荐
Ulyanov19 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:实时时钟与数据驱动 UI —— 从“事件回调”到“状态绑定”的范式跃迁
开发语言·python·qt·ui·架构·交互
AI进化营-智能译站19 小时前
ROS2 C++开发系列06:变量、数据类型与IO实战
java·开发语言·c++·ai
diangedan21 小时前
Android冻屏
android·java
阿里嘎多学长1 天前
2026-04-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
叶小鸡1 天前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
时空系1 天前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
liang_jy1 天前
Android View Tag
android
CHANG_THE_WORLD1 天前
python 批量终止进程exe
开发语言·python
古城小栈1 天前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust