I was following the series on canvas drawing,在1:27
处引用:“ 负责管理和绘制布局的类必须扩展SurfaceView,还需要实现一个线程,因此我们将实现[ C0]界面“
作者仅使用Runnable
代码而不使用xml文件来实现直接绘制到画布,而是使用java
类而不是java
。他在xml
中将布局定义为:
java
关联的活动文件具有如下代码:
public class Activity_Animation002_Layout extends SurfaceView implements Runnable{
Thread thread = null;
public Activity_Animation002_Layout(Context context){
super(context);
}
@Override
public void run(){
while(CanDraw){
//TODO- carry out drawing....
}
}
//some more code to follow
}
此绘图技术是否过时?我的意思是我搜索了很多内容,然后尝试搜索Google,检查了以下页面:public class AnimationActivity002 extends Activity{
Activity_Animation002_Layout animation002_LayoutView;
@Override
protected void onCreate(Bundle savedInstance){
super.onCreate(savedInstanceState);
animation002_LayoutView = new Activity_Animation002_Layout(this);
setContentView(animation002_LayoutView);
}
}
,Custom Drawing,Canvas Drawing,Layouts,Layout Resource,但是它们都没有扩展SurfaceView ]。 我可以在文档中哪里找到它? 但是,如果这是一种过时的技术或东西,那么做同一件事的新方法是什么?
surfaceView
的View
类中就可以完成绘图。onDraw(Canvas)
是一种特殊的视图。使用SurfaceView
,您可以在另一个线程(而不是UI线程)上绘制。这就是为什么您的类必须实现SurfaceView
的原因-您必须将其传递给线程。一个例子:Runnable
在UI线程上绘制,因此,如果尝试在该视图中制作动画并在UI线程上做一些事情(例如,滚动浏览某个布局,它将变得很迟钝)View
画在另一个线程上,因此您可以自由设置动画效果,并且滚动,单击内容等而不会出现滞后。SurfaceView
也可能用于游戏(屏幕上正在发生很多事情),但是我不会说它在当今已经大量使用。但事实是,有可能基于SurfaceView
或类似拍打小鸟的东西制作一些躲闪的游戏总结:
SurfaceView
类,但仅当您不打算使用UI进行其他操作时,才可以。 (或绘图不长)。 View
完成,因为那里没有发生太多事情-您只需绘制一次图像即可。我什至还记得我完全用View
类做过纸牌游戏,您将纸牌拖到中间进行玩。