我正在创建一个手指画颜料触摸机制,我正在寻找增加和增强绘图性能的方法(使其快速响应)。
在android中使用canvas进行绘制我们基本上创建了一个自定义视图,我们扩展了(View)类,最后我们覆盖了最重要的绘制方法,即(onDraw)方法。我们可以将在画布上绘制的常用代码可视化为:
常用绘图
public class UsualDraw extends View{
//constructor (usually 3)
//........
//the onDraw function
@override
protected void onDraw(Canvas canvas){
//here we draw what ever we want
}
}
第一次通知
我注意到其他人使用另一种技术在画布上绘制,这涉及多线程,而不是扩展(视图)它们扩展(SurfaceView)。可能是这样的:
public class AnotherDraw extends SurfaceView implements SurfaceHolder.Callback{
//constructor (usually 3)
//........
//the onDraw function
@override
protected void onDraw(Canvas canvas){
//here we draw what ever we want
}
//in addition to 3 methods
@override
protected void surfaceChanged(......){
//...
}
@override
protected void surfaceCreated(......){
//here background thread starts.
}
@override
protected void surfaceDestroyed(......){
//here back ground thread should stop.
}
}
基本上是后台线程的图纸。
第二次通知
我注意到在屏幕上触摸和绘图时,缺少点意味着当你画得非常快时,屏幕将无法跟上你的手指速度(因此缺少触摸点或者可能忽略了触摸点)
我的问题
1)为什么有些文档会扩展View而其他文档扩展SurfaceView?在我的情况下,我应该如何使用响应式绘图?这有什么不同吗?
2)我应该怎么做才能使屏幕跟上非常快速的绘图,并确保绘制每条路径?