问题标签 [surfaceholder]

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 回答
5652 浏览

android - SurfaceHolder.lockCanvas() 返回 null

我正在尝试使用以下代码创建画布并为其绘制位图:

我遇到的问题是我在代码中检查的问题——lockCanvas() 始终返回 null。我或多或少地在学习这一点,所以我对 SurfaceView、SurfaceHolder 或 Canvas 的了解不够,无法以一种或另一种方式说出我可能做错了什么;有什么建议么?

0 投票
1 回答
866 浏览

surfaceview - 怎么画得更快?SurfaceView、SurfaceHolder 脏矩形

我对 SurfaceView 有疑问。

函数 DrawWave 由定时器间隔 5ms 调用,但实际上两次调用之间需要超过 30ms,(我尝试删除 drawColor,drawPath)。

我尝试了“模式1”和“模式2”,通过使用Dirty rect,希望它可以运行得更快。Interval是一样的,都是30ms以上,(这个宽度是800px,eScrX-sScrX<20px)

问题 1:使用 SurfaceView/SurfaceHolder 是不是我做错了什么?

问题2:如何提高绘图速度?我希望它能在 10 毫秒内完成绘图。

我的代码:

0 投票
0 回答
608 浏览

android - 如果按下主页按钮时调用surfaceDestroyed(),则线程将运行

我是 android Surfaceview 实现的新手。我正在android3.0 中开发RDP 客户端应用程序。我从套接字获取图像流,使用 Surfaceview 和 Thread 将此图像绘制到表面。

表面视图示例代码:

问题是

1)如果我按下主页按钮然后surfaceDestroyed()被调用thread并被终止

但是在按下从主页按钮打开应用程序后,我需要继续线程并更新图像(来自套接字的输入流)。

2)如果我将事件上的doubletap活动称为子活动,surfaceDestroyed()则调用Thread终止

从子活动返回后,我需要在哪里继续显示图像。

在这两种情况下,由于线程已经启动,我都遇到了异常。java.lang.IllegalThreadStateException:

请帮助如何在不按下主页按钮或调用另一个子活动的情况下运行相同的线程?

感谢和问候亚米尼

0 投票
1 回答
1705 浏览

android - getSurfaceHolder().getSurfaceFrame() 重新生成高度和宽度为零的矩形

我正在制作一个基本的动态壁纸。该代码在我的“运行 ICS 的 Galaxy S2(GT-I9100)”上运行良好,并且该函数返回正确的高度和宽度值。但是,当我尝试在不同的设备“运行 GB 的 Galaxy S2(SHW-M250L)”上运行相同的 apk 时,矩形在 Rectangle 中的高度和宽度为零,返回的:getSurfaceHolder().getSurfaceFrame()函数如日志中所示。

请参考以下代码:

我担心的是为什么它在特定设备上失败或者我留下了一些错误?提前致谢。

0 投票
1 回答
1679 浏览

android - Android 相机 - 在纵向模式下,屏幕的一半是黑色的

我试图创建相机应用程序,但我遇到了这个问题:在横向模式下使用相机时一切正常,但在纵向使用 setDisplayOrientation(90) 方法时会出现这个问题:

一半的屏幕是黑色的。

图片在这里:http: //i.stack.imgur.com/sPTex.jpg

表面创建方法:

我的 XML 布局

顺便说一句,在使用 ADB 拍摄的屏幕截图中 - 相机正常显示。在 Xperia ST27i 和三星 Galaxy Pocket 上进行测试 - 结果相同。

谢谢

0 投票
3 回答
1267 浏览

android - 如何在我的代码中修复这个 SuperNotCalledException?

我的游戏有问题。每次玩家死亡时,都会出现一个屏幕,可以在其中按“再试一次?”。然而,当他按下这个按钮时,游戏崩溃了,android 说游戏被终止了。然后突然游戏重新开始。我无法弄清楚如何在重新启动之前解决游戏崩溃的问题。这是触摸的代码:

完成所有后台工作的我的面板如下所示:

最后是logcat:

先感谢您!

0 投票
0 回答
1665 浏览

android - android SurfaceHolder.lockCanvas 返回 null

我一直在尝试在观察者回调中进行绘制,当我尝试锁定画布时,我总是得到一个空返回。SurfaceHolder 似乎还可以。我添加了一个 SurfaceHolder 回调,它在游戏早期被调用。

这是我的观察者更新方法:

这是我在初始化中第一次使用它的地方:

我什至在创建表面时再次设置它,(我最近添加它只是为了确定)

这是一些日志。我打印了线程,因为起初它是从异步线程开始的,我设法避免了这种情况。:

我到底做错了什么?我的 doDraw 一直在工作,直到它开始尝试绘制位图。然后我想从lockCanvas中检查null。

我在这里找到了答案How to draw an overlay on a surfaceView used by Camera on Android? 看来你不能在预览上画画。我得到了一个关于 PUSH_BUFFER 类型表面的异常,所以我将它重置为 NORMAL,这样它就不会抱怨了。我无法锁定预览的表面,如果它不是 NORMAL,它会抛出异常。显然你不能动态地改变表面类型。这可能是它被弃用的原因,但是除非您将其设置为 PUSH_BUFFER,否则相机预览将不起作用。我将在顶部添加另一个非 Surface 视图,用于绘制和渲染拍摄的照片。

感谢您的关注,我希望这对某人有所帮助。

0 投票
2 回答
2919 浏览

android - 使用自动对焦无法拍照

我已经针对我的问题搜索了一些解决方案,并且确定有很多相关问题,但没有解决我的问题。

我收到运行时异常:takepicture failed:native_autofocus..etc。

我尝试使用自动对焦从相机拍照,但我似乎无法理解可能导致错误的原因。

这是我的代码。

我认为我的可运行代码中缺少某些东西,我试图省略可运行并执行一次自动对焦,它消除了运行时错误。我是否错过了重新初始化这部分的某些内容?

0 投票
2 回答
1660 浏览

java - Android Surface 类 Surface.ROTATION_ 无法解析或不是字段

我正在尝试修复我的相机应用程序。当我在横向模式下握住相机时,它会在屏幕上横向预览。我在堆栈上找到了这个修复:Android - Camera preview is sideways

在我的CameraSurfaceView类构造函数中,我得到了这样的表面this.Surface = getHolder();。在该surfaceChanged方法中,我根据 Surface.ROTATION_<#> 检查显示旋转 0、90、180 和 270 度(方法如下)。但是,每个ROTATIONSurface 常量都带有以下错误下划线ROTATION_<#> cannot be resolved or is not a field。我不确定我做错了什么。我CameraSurfaceView的活动与我的活动是分开的,所以我想知道显示是否与它有关?希望这被正确解释,如果您需要更多代码或任何内容,请告诉我。我提前感谢这一点!

0 投票
1 回答
4602 浏览

android - 了解 SurfaceHolder 概念

我想编写一个球在屏幕上移动的程序,因此,我阅读了很多教程,但我无法理解这一行:

什么是方法中的“ this”参数addCallback?为什么我使用这种方法?我读到了,SurfaceView但我不能很好地理解。它有什么作用?SurfaceHolderCanvasSurfaceHolder

我知道也许我的问题很愚蠢,但这是一个问题!请解释一下这个概念。