问题标签 [surfaceview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6678 浏览

android - 获取 SurfaceView 尺寸

我想我可能会问一个愚蠢的问题,但我还是 Android 编程新手,我无法(尽管我付出了所有努力)在谷歌上找到我的答案。

问题是,我正在尝试使用 2D 图形开发一个小游戏。我希望我的“游戏板”位于屏幕上的特定位置,这样我就可以在框的上方和下方显示游戏中的信息。但是由于那里开始有很多 Android 手机,我正在考虑获取“动态”值,以便我可以调整我的字体大小以适应每台设备。

我的游戏不是全屏的(但它可能是,这没什么大不了的),而是在一个没有标题栏的窗口中。

我正在使用默认SurfaceView类的扩展,实现SurfaceHolder.Callback. 我尝试编写以下方法:

但返回的值为零。

任何人有一个想法(即使这意味着改变显示策略)?非常感谢。

0 投票
3 回答
4257 浏览

android - 继承 SurfaceView 并覆盖 onDraw() 以更改 SurfaceView 参数以生成所需大小的预览

我已经将 SurfaceView 子类化并在 Activity 的 onCreate 中实例化它。生成预览,但控件从不进入 onDraw(),它在 SurfaceView 的子类中被覆盖。这是为什么?

在Surface上绘制预览之前,如果实现了onDraw回调,是不是应该把控制权交给呢?

因为 onDraw 回调对 Android 框架说'你不绘制视图。我会画它,因为我已经实施了'。我对吗?

那么,为什么控件无法进入onDraw()呢?请帮忙。

0 投票
1 回答
7443 浏览

android - android视图或surfaceView,我应该使用哪个?

我一直在尝试制作一个可滚动/可缩放的应用程序,除了绘制位图外,一切都很好。这是一个非常大的图像(6656 x 4096),我已将其拆分为图块。位图绘制到一个矩形数组,它检测左上角的矩形,以便绘制覆盖用户可视屏幕的位图。我的问题是,当应用程序必须将位图加载到内存中时,这一切都会滞后;一旦加载它们就不是问题了。我从 512 x 512 瓷砖开始,然后下降到 128 x 128。虽然它有所帮助,但仍有一些明显的滞后。我一直在研究surfaceView,如果我应该坚持使用View,或者使用surfaceView 来解决我的滞后问题,我希望得到你的意见。

0 投票
1 回答
3274 浏览

android - Surface 和 Canvas 的关系:Android

Surface 和 Canvas 之间的关系到底是什么。

请解释。

0 投票
4 回答
6454 浏览

android - 将 GestureOverlayView 添加到我的 SurfaceView 类,如何添加到视图层次结构?

我在后来的回答中被告知我必须将我在代码中创建的 GestureOverlayView 添加到我的视图层次结构中,我不是 100% 如何做到这一点。以下是完整性的原始问题。

我希望我的游戏能够识别手势。我有一个很好的 SurfaceView 类,我使用 onDraw 来绘制我的精灵,并且我有一个线程正在运行它来调用 onDraw 等。

这一切都很好。

我正在尝试将 GestureOverlayView 添加到此,但它不起作用。终于破解到它不会崩溃的地方,但这就是我所拥有的

onGesturePerformed 永远不会被调用。他们的示例在 xml 中有 GestureOverlay,我没有使用它,我的活动很简单:

所以我在这里丢失了一些信息,它没有调用 onGesturePerformed 并且漂亮的漂亮黄色“你正在画一个手势”永远不会出现。

0 投票
1 回答
5337 浏览

android - Android OpenGL 扩展 GLSurfaceView 空指针异常

我正在尝试为 android 创建一个简单的 3-D 应用程序,它将在 OpenGL 视图之上有一个额外的视图(很像 API 演示中的 SurfaceViewOverlay 示例)。我在尝试使用扩展的 GLSurfaceView 类实现该方法时遇到了问题。我已经设置了一个示例,我正在尝试将此演示与 API Oerlay 演示结合起来。如果我尝试像这样投射到 Martin 的 VortexView 对象(替换 API 演示中的第 44-46 行)

我收到一个 ClassCastException 错误(这是可以理解的,因为我假设强制转换是相当具体的)所以我想我正在寻找一种方法来将视图从 GLSurfaceView 实例转移到新的子类或将渲染表面设置为创建子类后的 XML 定义视图。

编辑:我已经取得了一些进展,试图让它工作-在视图 XML 使用的 API 示例中(来自 ApiDemos/res/layout/surface_view_overlay.xml)

如果我将该元素更改为
com.domain.project.VortexView ,它将使用上面的代码正确执行转换,但在遇到 surfaceCreated 和 surfaceChanged 例程时会生成空指针异常(我认为这是基于 GLThread 类中的调用方法GLSurfaceView 类中的行号)。所以也许我应该改变这个问题 - 如何在不在 surfaceCreated 和 surfaceChanged 上生成 NullPointerExceptions 的情况下实现 GLSurfaceView 的扩展,或者如何在没有 GLSurfaceView.java 的源代码的情况下调试它们?

0 投票
21 回答
314423 浏览

android - 如何拥有透明的 ImageButton:Android

这就是我试图获得一个透明的 ImageButton 以便将这些按钮放在 SurfaceView 上的原因。但是,只要我在 xml 中包含透明行,Eclipse 就会在项目中给我一个错误。

请帮忙。

0 投票
0 回答
1523 浏览

android - 使用 ViewGroup.addView() 将 GestureOverlayView 添加到 SurfaceView 游戏面板

经过这里好心人的大力帮助,我终于几乎可以使用 GestureOverlayView 启动并运行我的小游戏面板(即表面视图类)。通过使用 addView 我终于能够添加 GestureOverlayView 并让它工作,问题是调用这个:

根据我给出的索引,哪个视图占主导地位。这让我相信我的游戏面板必须作为子视图添加到 GestureOverlayView,这是正确的吗?如果是这样,我如何获得 GestureOverlayView 的子视图?还是反过来, GestureOverlayView 成为我主视图的子视图?

0 投票
1 回答
2159 浏览

java - 使用新元素即时更新 Android SurfaceView

我有一个数据库,其中包含以下格式的记录:. 我希望我的应用程序做的是从外部数据库中选择记录,并使用 SurfaceView 在手机屏幕上显示这些记录。

目前,我有一个活动和一个服务,负责应用程序的记录收集部分。Activity 将 Intent 传递给 Service,Service 通过返回需要显示的记录来响应。记录作为 Data 类的实例存储在我的程序中,并且仅具有应在视图中绘制元素的屏幕坐标(我只是为数据库中的每条记录绘制一个圆圈)。

为简洁起见,我不会包含服务,但会包含 Activity 类的骨架和我希望显示的数据。

我遇到的问题与 SurfaceView 有关。我意识到很多人会建议我只使用常规视图,但我的应用程序涉及很多元素,因此 SurfaceView 将更适合我的需求。下面是我的 SurfaceView 类的骨架,其中包含一个用于管理线程的嵌套类。

我遇到的问题是,一旦我对 Panel 类进行了初始调用,我将从服务中获取新记录,因此,我的 Info Map 数据结构将得到更新。但是,我的 Panel 类只是陷入了一个循环,并且从未接收到任何新的 Data 对象。我发现的所有 SurfaceView 示例都涉及在 SurfaceView 类本身中更新它们的方法(例如触摸屏幕和创建新图像等)。遗憾的是,我被这个特殊问题难住了。有没有更好的方法来设计我的 Activity/SurfaceView 交互?是否需要额外的视图?

0 投票
1 回答
625 浏览

android - 是否可以在程序启动时以外的任何时间使用游戏线程启动 SurfaceView?

我已经阅读了几个示例程序和教程来尝试解决我的问题,但它们似乎都以相同的方式进行。我使用了一些活动和 xml 文档来创建一个在我的游戏开始时加载的菜单。当用户单击“开始游戏”按钮时,它会加载一个新的 Activity,该 Activity 使用我的游戏线程和所有游戏属性设置视图。我知道这个活动有效,因为我已经将它作为自己的项目单独运行,但是我尝试在菜单之后启动它的每一种方式,我都会得到一个 nullPointerException 并且它强制关闭。我阅读了 SurfaceViewOverlay 教程并尝试使用该实现,但我使用的是 SurfaceView,而不是 GLSurfaceView。我正在讨论重写我的整个程序以使用 OpenGL,但我想我会看看是否有其他人知道我在这里做错了什么。

感谢您的帮助,亚伦