我正在开发需要扩展SurfaceView的应用程序。 现在,我在重新绘制视图时遇到了一些问题。

对于普通的android.view.View,我将覆盖onDraw()方法,将所有图形登录名都放在此方法中。 并在需要重绘时调用invalidate()方法。

但是SurfaceView呢? 似乎postInvalidate()可用于调用其重绘。 但是我可以在哪里放置图形逻辑呢?

我应该将graphci登录名放到Surface.Callback.surfaceCreated()吗? 如果是这样,当我调用方法postInvalidate() ,它会在内部调用surfaceCreated()吗? 如果没有,该如何解决?

===============>>#1 票数:1 已采纳

对于SurfaceView,您应该创建第二个类,该类将创建一个用于管理游戏玩法和渲染的后台线程,以便在渲染时它将锁定屏幕,因此没有任何东西可以中断它,并且您将图形逻辑放在扩展SurfaceView的第一类上。 下面的链接似乎在其中详细介绍了示例代码。 http://www.mathcs.org/java/android/game_surfaceview.html

  ask by hguser translate from so

未解决问题?本站智能推荐:

1回复

我在每个Android图形/ SurfaceView教程上遇到麻烦

我正在尝试学习如何在Android上制作视频游戏,因此我需要获得一些不错的教程,以介绍如何使用SurfaceView对象在Android上制作图形。 但是,我尝试过的每个图形教程(主要是SurfaceView东西)都失败了。 请注意,我不想使用XML,因为XML超出了我的范围,Google只
2回复

Android SurfaceView,OnDraw被调用但显示没有更新而没有invalidate()

我在跟踪典型的Android图形流程时遇到了一些麻烦。 有很多例子,但我的似乎没有用。 在我的主要活动中,我这样做: 在我的资源文件中,我有3个覆盖SurfaceView的自定义类。 在我对这些Surface Views的构造函数中,我有这样的东西: 在我的线程运行方法中,
1回复

使用新元素即时更新Android SurfaceView

我的数据库充满了以下格式的记录:。 我希望我的应用程序要做的是从外部数据库中选择记录,然后使用SurfaceView在电话屏幕上显示这些记录。 目前,我有一个Activity和一个Service负责应用程序的记录收集部分。 活动将意图传递给服务,服务通过返回需要显示的记录进行响应。
2回复

Android - 如何使用自定义SurfaceView为移动的形状设置动画?

我正在尝试使用LunarLander示例作为基础绘制将在屏幕上移动的形状。 问题是,不是“移动”它们只是在新位置重绘,而旧位置仍然被绘制。 我把最短的代码放在一起来证明这个问题。 主要活动: 自定义SurfaceView: 布局:
1回复

Android:崩溃:二进制XML文件行:错误膨胀类(使用SurfaceView)

我有android surfaceView,并且我正在尝试添加按钮。 在surfaceView画布中我画了一些东西。 我有一个线程类来继续绘图。 线程类 surfaceView和绘图类 这是main.xml 问题:如果我没有“MySurfaceView”作为嵌
1回复

在此简短的SurfaceView示例中,哪个线程被阻塞以等待线程join()完成?

有人可以解释阻塞了哪个线程的情况吗? 这里的线程对象用于画布和绘图图形,在此图形线程上调用join()方法,这样它将继续完成。 而另一个线程被阻塞并正在等待。 这是哪个线程? 如果surfaceView类在主UI线程上运行,则该UI将被阻塞,等待图形线程完成。 这根本不符合逻辑。
1回复

如何设置SurfaceView背景透明

我正在使用SurfaceView绘制一个圆圈,如下所示: 所以灰色backdround实际上是保存SurfacrView的线性布局的一部分。 粉色圆圈是我画的部分,黑色部分是我想要摆脱的,我希望它是透明的,并看到下面的灰色背景。
2回复

检测在SurfaceView上绘制的视图上的触摸

我正在开发游戏,但遇到了一些麻烦,由于我是Android图形方面的新手,因此可能无法正确执行此操作。 我有一个我自己的Card对象的SurfaceView和一个ArrayList ,它扩展了View 。 我为Card对象重写了onDraw方法,然后在SurfaceView's onDra
2回复

在辅助线程停止之前,SurfaceView不会更新

这里存在类似的问题,但似乎不适用于我的问题: Android SurfaceHolder.unlockCanvasAndPost()不会导致重绘 问题描述请参阅结尾,但首先... 我的密码 我有一个非常简单的活动: MySurfaceView.java: MyS
1回复

SurfaceView显示为空,未呈现任何内容

我正在尝试从线程内将一些形状绘制到SurfaceView上,但是什么都没有呈现到屏幕上。 我曾遇到过同样问题的人看过类似的问题,但没有一个答案使我找到解决方案,这表明我的特殊情况是由其他原因引起的。 我创建了代码的简化版本来演示该问题。 渲染由RenderingTestView类处理,