Je suis le CameraX codelab et j'obtiens un mauvais rapport d'aspect sur l'aperçu même en utilisant les méthodes setTargetAspectRatio
et 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()
...
Et la mise en page utilise une taille codée en dur telle que présentée dans le codelab.
<TextureView
Android:id="@+id/view_Finder"
Android:layout_width="640px"
Android:layout_height="640px"
...
Ce serait bien si la bibliothèque avait CameraTextureView
et une propriété Android:scaleType
(similaire à l'existant pour le ImageView
) pour ajuster l'aperçu à la taille de l'aperçu.
Vous pouvez définir le rapport d'aspect d'un TextureView
avec Matrix
comme ceci:
Matrix txform = new Matrix();
textureView.getTransform(txform);
txform.setScale((float) = videoWidth / viewWidth, (float) videoHeight / viewHeight);// aspect ratio
textureView.setTransform(txform); // apply matrix
https://stackoverflow.com/a/49449986/9397052 il existe une solution à un problème similaire. Après avoir décidé d'une résolution, n'utilisez pas la fonction setTargetAspectRatio
; à la place, vous ne devez utiliser que setTargetResolution
. Ensuite, cela devrait fonctionner de la même manière.