Android 如何在cameraX预览上设置预览大小?

Android 如何在cameraX预览上设置预览大小?,android,android-camerax,Android,Android Camerax,我试图在纵向模式下创建预览,我希望预览与屏幕一样宽,并垂直包装内容。但是,当我这样做时,我总是得到预览大小1200x1200,并且预览水平拉伸以填充屏幕 但拍摄的图像大小正确(1024x768) 换句话说,我希望预览大小与捕获的图像相同 任何帮助都将不胜感激 preview = new Preview.Builder() .setTargetAspectRatioCustom(new Rational(3, 4)) .build(); 如果希望预

我试图在纵向模式下创建预览,我希望预览与屏幕一样宽,并垂直包装内容。但是,当我这样做时,我总是得到预览大小
1200x1200
,并且预览水平拉伸以填充屏幕

但拍摄的图像大小正确(
1024x768

换句话说,我希望预览大小与捕获的图像相同

任何帮助都将不胜感激

preview = new Preview.Builder()
            .setTargetAspectRatioCustom(new Rational(3, 4))
            .build();

如果希望预览适合屏幕宽度,可能需要测试将
PreviewView
的缩放类型设置为
fit\u CENTER
(或
fit\u START
fit\u END
,具体取决于您希望如何在屏幕上布局预览)

可以通过编程方式设置比例类型:

previewView.setScaleType(PreviewView.ScaleType.FIT_CENTER);
或在布局文件中:

<androidx.camera.view.PreviewView
   ...
   android:scaleType="fitCenter" />

FIT.*
调整预览的宽度或高度,以匹配
PreviewView
容器的宽度或高度(如果容器和预览分辨率具有相同的纵横比,则两者都可以),匹配哪个维度取决于两个因素,包括预览分辨率、设备的自然方向和显示器的当前方向。因此,这种方法可能不适用于所有情况,有时预览将填充容器的宽度,有时,预览将填充容器的高度


如果您关心的是显示预览的纵横比,那么解决问题的另一种方法是设置
PreviewView
的纵横比(在您的情况下,我假设它是4x3),并将
PreviewView
设置为使用
FIT_CENTER
缩放类型。

设置预览视图的纵横比解决了我的问题。谢谢。您是否使用setTargetSpectratio(AspectRatio.ratio_4_3)使预览全屏?我必须使用app:scaleType=“fitCenter”而不是android:scaleType=“fitCenter”
previewView.setScaleType(PreviewView.ScaleType.FIT_CENTER);
<androidx.camera.view.PreviewView
   ...
   android:scaleType="fitCenter" />