在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前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下: