在compose中的Canvas用kotlin显示多数据波形闪烁的问题
在compose中的Canvas显示多数据波形闪烁的问题:当在Canvas多组记录波形数组时,从第一组开始记录多次显示,如图,当再次回到第一次记录位置再显示时,波形出现闪烁。
原码如下:
data class DcWaveForm(var bDat: Boolean,var isOpenEar:Boolean,var count:Int,val dat: IntArray = IntArray(20) , //220var 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前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下: