作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为相机预览创建隐藏的 SurfaceView。我尝试了在回答另一个问题时推荐的方法:
WindowManager wm = (WindowManager) mCtx.getSystemService(Context.WINDOW_SERVICE);
params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
wm.addView(surfaceview, params);
surfaceview.setZOrderOnTop(true);
mHolder.setFormat(PixelFormat.TRANSPARENT);
但它并不是不可见的,实际上它占据了整个屏幕。我尝试设置 alpha 或调整它的大小,但它不起作用。有没有办法使其隐藏或至少将其调整为 1x1 大小?
编辑:
我还要补充一点,在 Activity 布局中简单地放置 1x1 SurfaceView
在我的情况下是行不通的,因为我使用多个布局并且我相信 Views
在布局更改时被破坏...
最佳答案
SurfaceView
占据了整个屏幕,因为您的代码将宽度/高度定义为 WRAP_CONTENT
。尝试使用
new LayoutParams(1, 1, LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT)
要制作隐藏的相机或类似的东西,你不应该使用当前 Activity
中的 Context
因为你的 Activity 需要在录制过程中可见(所以这不是隐藏的...)。当当前 Activity 置于后台时,上下文将为 null
并且录制将停止或崩溃。
您可以尝试运行一个Service
(不可见但也有上下文)并从该服务中的代码创建一个SurfaceView
。
关于Android - 如何为视频录制创建不可见的相机预览?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17041333/
我是一名优秀的程序员,十分优秀!