gpt4 book ai didi

java - 直接绘制到 Canvas 并使用 java 代码创建布局

转载 作者:行者123 更新时间:2023-12-04 10:39:35 25 4
gpt4 key购买 nike

I was following the series on canvas drawing ,并在 1:27 ,作者引用:“一个负责管理和绘制布局的类要扩展SurfaceView,还需要实现一个线程,所以我们要实现Runnable接口(interface)

作者正在使用 java 实现直接绘制到 Canvas 而不使用 xml 文件。仅代码并使用 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
}

关联的 Activity 文件具有如下代码:
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是一种特殊的 View 。与 SurfaceView您可以在另一个线程(不是 UI 线程)上绘制。这就是为什么你的类(class)必须实现 Runnable - 你必须将它传递给一个线程。一个例子:
  • View绘制在 UI 线程上,因此如果您尝试在该 View 中设置动画并在 UI 线程上做一些事情(例如滚动布局),它将滞后
  • SurfaceView绘制另一个线程,因此您可以自由地为某些内容设置动画,还可以滚动、单击等内容,而不会出现延迟。
  • SurfaceView可能也用于游戏(屏幕上发生了很多事情),但我不会说它现在被大量使用。但事实是,基于SurfaceView 制作一些狡猾的游戏是可能的。 , 或类似飞扬的鸟

  • 总结一下:
  • 我不认为它是一种过时的技术,更像是它不常用,因为你会在特定情况下使用它,你需要在不卡住 UI 线程的情况下绘制一些东西(例如简单动画)
  • 你也可以画一个简单的View类,但仅当您不打算对 UI 执行其他操作时才可以。 (或者如果图纸不长)。 你提到的视频中的事情可以用一个简单的 View 来完成,因为那里没有发生太多事情 - 您只需绘制一次图像就可以了。我什至记得我完全用View 完成了一个纸牌游戏。上课,你把牌拖到中间去玩。
  • 关于java - 直接绘制到 Canvas 并使用 java 代码创建布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991007/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com