我正在关注 CameraX codelab即使使用 setTargetAspectRatio
和 setTargetResolution
方法,我在预览时也得到错误的纵横比。
private fun startCamera() {
// Create configuration object for the viewfinder use case
val previewConfig = PreviewConfig.Builder().apply {
setTargetAspectRatio(Rational(1, 1))
setTargetResolution(Size(640, 640))
}.build()
...
布局使用硬编码尺寸,如代码实验室中所示。
<TextureView
android:id="@+id/view_finder"
android:layout_width="640px"
android:layout_height="640px"
...
如果库有 CameraTextureView
和属性 android:scaleType
(类似于 ImageView
的现有属性)来调整,那就太好了预览到预览大小。
最佳答案
你试过了吗?
val metrics = DisplayMetrics().also { viewFinder.display.getRealMetrics(it) }
val screenSize = Size(metrics.widthPixels, metrics.heightPixels)
val screenAspectRatio = Rational(metrics.widthPixels, metrics.heightPixels)
val viewFinderConfig = PreviewConfig.Builder().apply {
//...
setTargetResolution(screenSize)
setTargetAspectRatio(screenAspectRatio)
setTargetRotation(viewFinder.display.rotation)
}.build()
val preview = AutoFitPreviewBuilder.build(viewFinderConfig, viewFinder)
您可以在这里找到 AutoFitPreviewBuilder: https://gist.github.com/yevhenRoman/90681822adef43350844464be95d23f1
我建议您使用 dp 或 constaraints 为您的 TextureView 设置宽度和高度。 让我知道它是否适合您,谢谢!
关于android - 如何使用 CameraX 设置正确的纵横比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56266280/