2011-01-28 10 views
12

tengo una disposición con dos imágenes:imágenes de escala en relación androide para cribar anchura

  • uno que debe estirar a la anchura de la pantalla
  • uno por encima de ella que se deben escalar a la misma proporción fue el primero de forma automática a escala (en relación con el tamaño de imagen original)

más específica: las dos imágenes son rebanadas de la misma imagen, y por lo tanto algunos detalles dentro de ellos debe coincidir.
¿Puedo hacer esto en XML?

Si no puedo hacerlo a través de XML, tal vez podría prescalizar los gráficos. En este caso, ¿cómo debo preescalarlos?

+0

¿Ha resuelto esta pregunta? Por cierto, no estoy seguro de haberlo visto, pero actualicé mi respuesta al problema 'Canvas.onDraw'. – techiServices

+0

No, no resuelto. Supongo que lo haré programáticamente –

Respuesta

6

Esto es un poco un truco, pero le permitiría hacer esto en xml.

Si sabe que, por ejemplo, la imagen de arriba es X% del tamaño de la de abajo, entonces se puede utilizar layout_weight de LinearLayout para posicionar y tamaño de la imagen superior, en términos de porcentaje de la pantalla:

<LinearLayout android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView android:id="@+id/left_filler" android:layout_weight="20" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <ImageView android:id="@+id/top_image" android:layout_weight="50" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <ImageView android:id="@+id/right_filler" android:layout_weight="30" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
</LinearLayout> 
... bottom image

Lo anterior sería tamaño top_image al 50% de la pantalla con un desplazamiento del 20% desde la izquierda. Siempre que top_image tenga el 50% del tamaño de bottom_image, esto mantendrá una escala similar.

Alternativamente, la forma "correcta" de hacer esto es probablemente anular onDraw() en una vista personalizada y usar métodos de dibujo de lienzo.

0

Puede usar el método de clase CanvasdrawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) para dibujar el mapa de bits especificado escalando/traduciendo automáticamente para completar el rectángulo de destino. Esto se puede usar para ambos mapas de bits con diferente Rect. El Rect se puede formular dividiendo el ancho y la altura actuales del diseño. De modo que el programa escalará las imágenes de acuerdo con dispositivos con diferentes tamaños de pantalla.

Cuestiones relacionadas