【问题标题】:Android camera preview show only half bottomAndroid相机预览只显示一半底部
【发布时间】:2016-11-28 05:25:47
【问题描述】:

我使用了这个库 https://github.com/pedrovgs/DraggablePanel,顶部有一个 youtube 片段,底部有一个相机预览(片段内)。

我希望我的相机预览只显示相机底部的一半(我不拍照,我只是预览前置相机的底部就像一面镜子) 如何裁剪我的相机预览?谢谢大家的帮助!

我尝试设置 SurfaceView height=screenwidth 和 parentView height=my_height,但我的顶部片段(youtube 片段)显示为 SurfaceView

【问题讨论】:

  • 你到底想要什么,先搞清楚!
  • @Cver,请发布您的当前状态,即您的 XML 和当前状态的屏幕截图。

标签: android android-camera surfaceview android-textureview


【解决方案1】:

将固定高度(例如 200dp)设置为 surfaceView 并将其与父级(屏幕)的底部对齐。 并相应地设置相机预览大小

 Camera.Parameters params = camera.getParameters();
 params.setPreviewSize(your_width,your_height);
 camera.setParameters(params);

【讨论】:

  • SurfaceView 仍然只显示相机的中心,而不是底部。
  • 相机中心???我找不到你。你想只显示图像的底端而不是完整的图像吗?你能显示你的代码输出的图像和你想要的输出吗
  • 我不拍照,我只是预览前置摄像头的底部就像一面镜子
  • 对不起,我无法得到你真正想要实现的目标。
【解决方案2】:

您无法在 SurfaceView 中裁剪相机预览图像。

您可以隐藏 SurfaceView 的上半部分,只需将其与其他视图叠加即可(普通 XML 布局功能)。但要小心:SurfaceView 的行为并不完全像“真实”视图,而且它并不总是“按照视图层次结构的规则行事”。通常,您可以通过在onResume() 中以编程方式构建视图层次结构来克服这些故障。

另一种方法是切换到TextureView,或直接使用 SurfaceTexture 并将其显示在您选择的 OpenGL 上下文中。在后一种情况下,您可以使用其他一些 OpenGL 对象部分覆盖相机预览纹理,例如在相同的 OpenGL 上下文中显示解码的视频流。

【讨论】:

  • 我看到了这个,我在顶部有一个 YoutubeFragment,当我设置 YoutubeFragment 覆盖 SurfaceView 时,我的 YoutubeFragment 显示为 SurfaceView 的一部分。我也试过 TextureView 但两个 Fragment 不能重叠,顶视图被推到底视图
  • YoutubeFragment 显示为 SurfaceView 的一部分 - 你能分享截图吗?这听起来很不寻常
  • 两个Fragment不能重叠,顶视图被推到底视图 - 这可能只是你的XML布局错误
  • imgur.com/a/1pw9z youtube 屏幕显示以及相机预览
  • 我不这么认为,因为我使用 RelativeLayout 作为父视图,并且我没有设置任何属性,除了 id、width、height 用于 youtube 和相机的视图
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多