怎么保留上一次绘制的图形不被刷新掉
如何保留上一次绘制的图形不被刷新掉?
如何保留上一次绘制的图形不被刷新掉?
比如我要做一个随着时间的推移画出一个曲线的图形,这个曲线是由无数的短直线连成,这样就要求画下个直线时保留上一次画的直线,如何做?
------解决方案--------------------
只要你的数据在,就没问题。打个比方,你在时刻为0:00时,记录了有3个点ABC,此时连线为A->B->C,当时刻为1:00时,记录了4个点ABCD,那此时你只需根据你的点信息,在onDraw里面绘制出来就行。你应该以数据驱动UI的绘制,而不是造Canvas来保存上次的绘制。
------解决方案--------------------
当然你也可以通过holder.lockCanvas(dirty);来设定画布Canvas大小,这样子就不需要再画以前的数据了,但是这样子需要计算画布范围 如果对象太多 则代码更复杂 不仅不容易维护 对性能提升感觉也不算太大 还容易引发其它问题
所以推荐给你的做法是 你把你要画的对象列举出来(比如放到集合中) 然后每次刷新界面就画列举出来(集合中)的对象 这样子增删都很简单 一个优秀的程序员会选择这样做
如何保留上一次绘制的图形不被刷新掉?
比如我要做一个随着时间的推移画出一个曲线的图形,这个曲线是由无数的短直线连成,这样就要求画下个直线时保留上一次画的直线,如何做?
------解决方案--------------------
只要你的数据在,就没问题。打个比方,你在时刻为0:00时,记录了有3个点ABC,此时连线为A->B->C,当时刻为1:00时,记录了4个点ABCD,那此时你只需根据你的点信息,在onDraw里面绘制出来就行。你应该以数据驱动UI的绘制,而不是造Canvas来保存上次的绘制。
------解决方案--------------------
当然你也可以通过holder.lockCanvas(dirty);来设定画布Canvas大小,这样子就不需要再画以前的数据了,但是这样子需要计算画布范围 如果对象太多 则代码更复杂 不仅不容易维护 对性能提升感觉也不算太大 还容易引发其它问题
所以推荐给你的做法是 你把你要画的对象列举出来(比如放到集合中) 然后每次刷新界面就画列举出来(集合中)的对象 这样子增删都很简单 一个优秀的程序员会选择这样做