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