问题标签 [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.
android - Android中surfaceView回调调用surfaceChanged时尺寸不一致
我正在使用 SurfaceView 绘制到屏幕的一部分,从而使用后台线程更新绘图。surfaceview 实现了一个 SurfaceView.callback。
在 onDraw 方法中,我使用 canvas.drawpont(x,y,paint) 并逐个像素地绘制到几乎整个画布,因此在大屏幕上可能会非常密集。无论如何,如果我在横向和反向横向之间快速旋转手机,我会得到一个非法参数异常。如下:
在 313 的 SpecGugaeupdate 上,我有:
mHolder 是我的 SurfaceHolder。当然,在调用 onDraw 之前我也锁定了画布。
如果我在各个方向缓慢旋转,此方法将完美无缺,但是,当我在两个景观状态之间快速旋转 180 度时,它会触发此非法ArgumentException。在监控surfaceChanged中的宽度和高度时,我注意到当我快速旋转时,横向的宽度与纵向的高度配对。例如,在我的手机 (Motorola atrix) 上,SurfaceView 的纵向尺寸为 540x307 (WidthxHeight),横向尺寸为 960x172。当我在横向和反向横向之间快速旋转时会发生这种情况:
慢慢旋转到横向:
快速旋转以反转景观,表面变化被调用两次。
我尝试过覆盖 onMeasure,宽度和高度与 SurfaceChanged 的相同。因此,我似乎正在尝试在尚未准备好但已准备好将其锁定到我的 Holder 的画布上进行绘制。任何想法都会很棒,谢谢你的时间。
此外,在我的 surfacedestroyed 中,我正在处理我的线程,如下所示:
这会阻止线程执行 onDraw。
java - Android:surfaceView 在 onCreate() 中不能 getHolder(),必须在 onResume() 中
在我的活动中,我有一些观点和一个surfaceView
.
这是我的第一个代码onCreate()
如果我通过取surfaceView
并更改上面getHolder()
的代码onResume()
(我已经尝试了很多次得到这个结果),没有错误:
请为我解释。
android - Android:holder.getSurface() 总是返回 null
我的视图是一堆普通的小部件和一个表面视图。我不知道为什么在我得到surfaceholder
SurfaceView 并getSurface()
在持有人上再次使用后,我总是会返回 null。
这是我的示例代码:
当我看到 Android 文档的getSurface()
方法时。它是这样说的:
直接访问表面对象。Surface 可能并不总是可用——例如,当使用 SurfaceView 时,在视图附加到窗口管理器并执行布局以确定 Surface 的尺寸和屏幕位置之前,不会创建持有者的 Surface。因此,您通常需要实现 Callback.surfaceCreated 以了解 Surface 何时可用。
我不太了解这一点,但我知道我错过了一些东西。请为我解释一下,并告诉我Callback.surfaceCreated
手段,以及如何实施?
谢谢 :)
android - 更改 Android 自定义 SurfaceView 的大小
我正在尝试为 Android 应用程序创建 2D 游戏引擎。我已经按照本教程进行操作,它可以很好地创建全屏显示,但我不希望这样。我想让我的视图占据屏幕的顶部 2/3(或其他),并用标准的 Android 小部件(按钮、文本输入等)填充底部的三分之一。我不能让它工作。我能得到的最好的结果是一个空白屏幕。我尝试了许多排列,包括使用外部 LinerLayout,然后将自定义 SurfaceView 嵌入嵌套的 RelativeLayout 中,并将 Android 小部件放入嵌套的 LinearLayout 中,但它不起作用。
例如,这会产生一个白屏,当我觉得它应该是 SurfaceView 的 50%,TextView 的 50% 时:
活动主.xml:
MainActivity.java:
有任何想法吗?
android - Android Camera - app passed NULL surface
Whenever I run the cam_thread I get the error "app passed NULL surface". This code supposedly works on the HTC Incredible 1. I've reconfigured it slightly to run on a droid x. However I still get this error.
Main Thread
Cam_Thread
Manifest
This original code was written by Dr. Oros. http://www.cogsci.uci.edu/~noros/android_car.html
android - 如何构建自定义的摄像机应用程序?
我正在尝试开发自定义摄像机录像机。当我的设备在 Activity 的 beginRecording() 中执行 start MediaRecorder 方法时,应用程序崩溃。我不知道出了什么问题,因为我遵循Google API Guide。我的设备使用 Android 2.3 或更高版本。在我的 Nexus S 4.1.1 中执行正常,但在我的 Xperia 2.3.3 中没有运行,显示此跟踪。
我的代码是:
跟踪错误是:
更新:
我已经修复了这个错误。主要代码是:
但现在,我还有其他问题。当我在 2.2 和 2.3.3 版本的设备中安装应用程序时,因为在此版本中不支持以下行: mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 如果我更改代码:CamcorderProfile.QUALITY_LOW,则设备以最低质量记录。
我必须更改 2.2 和 2.3 版本中的代码:
为什么我必须这样做,当在 Android API 中,setProfile() 方法在 2.2 中可用并且设备应该以更高的质量记录可以支持?
更新2:
在 initCamera 方法中,我改变了:
在 2.3 版本的设备中,我可以使用该行来检测视频配置的分辨率: mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 但在某些设备(如 HTC Desire)中,不支持此配置。
对于 2.2 版本,可以接受 AAC 音频编码器吗?因为我的 HTC Legent 不支持这个音频编码器?UPDATE3:Android 2.2 版本不支持 ACC 音频编码器。
android - SurfaceView + Canvas,从一种颜色淡入另一种颜色
我有
我想使用 SurfaceView + Canvas 方法从列表中的一种颜色淡化到另一种颜色。这是我的尝试:
我觉得这应该按原样工作,并从第一种颜色褪色到第二种颜色,依此类推......最终循环,但相反,它从第一种颜色开始,然后褪色到一些不相关的颜色,结束超过。(我也测试了不同的数据)。这是我第一次使用 SurfaceView,所以我不确定我的画布方法是否正确。使用 Log.d,我看到一旦它进入一个内部 for 循环(前面带有“if”语句的循环),它就不会离开那个 for 循环......这对我来说没有意义但我认为这与画布和支架有关。帮助?
android - 在 Android 中创建 GameLoop
我正在此应用程序中创建与 GameLoop 相关的应用程序,如果用户单击屏幕,则在屏幕上绘制图像并且它以随机速度和随机方向在屏幕上移动。在代码中没有错误但是当我尝试运行该应用程序时,我最终遇到了强制关闭错误。
这是我的源代码:
源代码:GameLoop.java
源代码:Sview.java
源代码:ViewThread.java
源代码:elements.java
我得到的错误是:
提前致谢...
android - 在android的SurfaceView上渲染字节数组
嗨,我有一个原始图像转储,我存储为字节数组,我必须在表面视图上显示它。我试图将此字节数组转换为可变位图并在表面支架的画布上渲染,但在调用“drawBitmap”函数时出现此空指针异常。
BlockquoteE/AndroidRuntime(28358): 致命异常: main E/AndroidRuntime(28358): java.lang.NullPointerException E/AndroidRuntime(28358): at android.graphics.Canvas.throwIfRecycled(Canvas.java:1025) E/AndroidRuntime(28358) ): 在 android.graphics.Canvas.drawBitmap(Canvas.java:1065) 块引用
这就是我尝试渲染字节数组的方式
android - java.io.IOException:setDataSource 失败。:状态=0x80000000
我正在尝试在活动中使用媒体播放器播放 url:
它工作正常。@onSurfaceCreated
我用相同的代码将其设置为 in中的动态壁纸WallpaperService
,它给了我以下错误日志
如果我使用本地视频 uri 设置动态壁纸..它工作正常。
有什么想法/建议吗?