2011-03-31 26 views
9

He implementado una aplicación de cámara, que mostrará la vista previa en toda la pantalla del dispositivo. Pero mi requisito es mostrar la vista previa de la cámara en una pantalla pequeña. La resolución de mi dispositivo es 800x480 (WxH), es decir, Nexus one. Puedo mostrar la vista previa en toda la pantalla sin reducir la vista previa. Está viniendo a la perfección, pero cuando intento mostrar la vista previa en pantallas pequeñas (parte de mi pantalla móvil total), la vista previa se estira y no se ve bien.Cambio de tamaño de la vista previa de la cámara

¿Hay alguna manera de mostrar la vista previa correctamente en una pantalla pequeña. Creo que necesitamos reducir la vista previa de la imagen. Pero cuando trato de reducir la vista previa de la imagen, el sistema de Android no permite establecer el tamaño de vista preliminar a escala.

¿Alguien podría ayudarme a escalar la vista previa de la imagen en una pantalla pequeña?

+0

¿Lo resolvió usted? – powder366

Respuesta

0

Uday,

has necesitado tan solo cambiando

<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/preview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@id/ButtonGroup" 
     /> 

a algo como esto ....

<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/preview" 
     android:layout_width="fill_parent" 
     android:layout_height="50dp" 
     android:layout_above="@id/ButtonGroup" 
     /> 

si eso no es lo que está buscando, tal vez usted podría publicar su código actual para que podamos echarle un vistazo? :-)

+0

Gracias Jared por su respuesta ... Ya probé las sugerencias anteriores antes de publicarlas aquí ... Podemos reducir el tamaño de vista previa (tamaño de vista de superficie). Pero el problema del correo aquí es con la pantalla de vista previa. Es muy difícil ajustar la Vista previa de la cámara correctamente (sin ningún estiramiento o reducción) al tamaño de la vista de superficie. – uday

+0

uday, estoy pensando que una solución posible sería, determinar programáticamente el tamaño de la imagen tomada (o la vista previa), obteniendo las dimensiones, y luego, programáticamente, cambiar el tamaño de la vista previa para tener la misma relación de aspecto. Descubriría qué tamaño es demasiado grande (ancho o alto) y luego lo contraerá tanto como lo necesita, por lo que es la proporción adecuada. ¿Eso funcionaría para ti? Si es así, házmelo saber y veré si puedo hacerlo funcionar. :-) – Jared

3

Después de luchar con este mismo problema durante aproximadamente una semana, ¡POR FIN pude hacer que la vista previa de la cámara se redimensionara programáticamente! :-D

preview es el nombre de mi SurfaceView y en este código, lo tengo configurado para que se cambia el tamaño en sí a ser la mitad de la anchura de la RelativeLayout que está en.

ViewGroup.LayoutParams params = preview.getLayoutParams(); 
RelativeLayout myRelLayout = (RelativeLayout) findViewById(R.id.myRelLayout); 
params.width = (int) (myRelLayout.getWidth()/2); 
preview.setLayoutParams(params); 

Ahora para su uso, deberá observar la resolución de la vista previa y luego reducir la altura o el ancho en función de esa resolución.

+0

Además, en una nota relacionada, estaba teniendo grandes problemas con la vista previa de la cámara distorsionada después de tomar la primera fotografía. Más tarde descubrí que necesitaba agregar esta línea a mi archivo de manifiesto y lo arreglé. :-) '' – Jared

+0

¿Puede compartir algún código? – powder366

Cuestiones relacionadas