【问题标题】:Issue with Camera in fragment片段中的相机问题
【发布时间】:2017-09-06 15:19:49
【问题描述】:

我有Activity,其中包含ViewPager,它使用3 个片段实现FragmentPagerAdapter,我已经使用SurfaceView 在其中一个片段中实现了相机。因此,当用户从我的主页片段向左滑动时,他可以使用相机(就像在 WhatsApp 中一样)。问题是在启动应用程序时(我通过互联网获取一些数据并放入列表视图)或有时向左或向右滑动相机出现在主片段或主片段中一秒钟或更短时间,然后消失并出现主片段应该是。

这是下载数据时的问题,相机占用home片段直到 数据已加载。现在这是一秒钟或更短的时间: https://i.stack.imgur.com/wsEUy.jpg

这是下载数据后主页片段的实际外观: https://i.stack.imgur.com/AUv3V.png

我尝试将背景颜色添加到我的家庭片段容器 xml 但这没有用。

我按照这个例子在片段中实现了摄像头: https://github.com/rexstjohn/UltimateAndroidCameraGuide/blob/master/camera/src/main/java/com/ultimate/camera/fragments/NativeCameraFragment.java

有人可以提供帮助或提供一些建议吗?谢谢

【问题讨论】:

  • 一个代码 sn-p 会更有帮助。
  • 你能解释更多关于这个..我不明白你的意思。你想要什么。
  • 感谢您的回复。我添加了 2 张图片和说明。
  • Camera 片段在左边,所以它是第一个,不是吗?当初始化缓慢时,第二个('home')片段不会添加到寻呼机。您应该先创建所有片段,然后用数据(和相机预览)填充它们。
  • 我找到了适合我的解决方案。如果将来有人遇到同样的问题,我会作为答案发布。谢谢大家的帮助。

标签: java android android-fragments android-camera


【解决方案1】:

我找到了适合我需要的解决方案。因此,如果将来有人遇到同样的问题,那就是这里。不知何故,当我将我的CamerPreview 添加到View 时,问题出在FrameLayoutCameraFragmentOnCreateView 中。即使我尝试在CameraFragment 对用户可见时开始相机预览,并在它不可见时停止预览,但这无济于事,当我向左或向右滑动时,我总是通过相机预览在家庭片段上闪现。

所以我创建了类似于占位符的新片段并将其添加到FragmentPagerAdapter,然后当我的占位符片段对用户可见时,可以选择使用FragmentTransaction 创建我的CameraFragment(这也可以)但是我使用ViewPager 检测用户何时开始向左滑动然后FragmentTransaction 开始用实际CameraFragment 替换我的占位符片段。

交易并不像 WhatsApp 中那样顺利(如果有人知道他们是如何做到这一点并想要分享,那就太好了),但它可以正常工作,并且不会在主页片段上闪烁.

当然,如果有人知道如何改进解决方案或其他更好的解决方案,请随时分享。

【讨论】:

  • 如果您使用已弃用的 Camera API,请确保在单独的 Handler 线程中打开相机(以便 Camera.open() 和回调不会导致 UI 线程拥塞)。跨度>
  • @AlexCohn 谢谢我找到了你的解释如何使用HandlerThread 打开相机,投票赞成。现在它更流畅了,即使我认为FragmentTransaction 对 UI 的小故障。
  • 实际上,WhatsApp 在相机片段上作弊。当您左右交换时,预览不会移动;它只是或多或少地揭示出来。这表明(我没有尝试对他们的布局进行逆向工程,尽管这是可能的)他们在其他层下始终准备好预览表面,并且只需要及时打开或关闭相机。我相信这是一种比将预览表面放在 ViewPager 内的片段中更强大的方法。某些设备可能对相机预览表面部分超出实际屏幕感到不满意。
  • 这很有趣。我注意到当您向左交换时相机不会立即打开,有时它会等待可能检查相机是否可用,然后打开,即使布局出现在一些灰色屏幕中。但是您认为他们是如何在不使用ViewPager 和片段的情况下向左滑动相机的?
  • 他们可能使用 ViewPager,他们可以简单地在“左侧”有一个透明片段和在视图寻呼机下的摄像头视图。
猜你喜欢
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2014-10-25
  • 1970-01-01
相关资源
最近更新 更多