2011-01-28 11 views
12

Ho una disposizione con due immagini:immagini in scala di relativa android per schermare larghezza

  • che dovrebbe strech alla larghezza dello schermo
  • uno sopra esso che dovrebbe scalare alla stessa proporzione il primo era automaticamente ridotta (rispetto alla dimensione dell'immagine originale)

più specifiche: le due immagini sono fette della stessa immagine, e quindi alcuni particolari al loro interno dovrebbero corrispondenti.
Posso farlo in XML?

Se non riesco a farlo tramite XML, forse potrei prescallire la grafica. In questo caso, come devo ordinarli?

+0

hai risolto questa domanda? non sapendo se hai visto ma ho aggiornato la mia risposta al tuo problema 'Canvas.onDraw'. – techiServices

+0

No, non risolto. Credo che lo farò a livello di programmazione –

risposta

6

Questo è un po 'un hack, ma ti permetterebbe di farlo in xml.

Se si sa che, per esempio, l'immagine in alto è X% della dimensione del fondo uno, quindi è possibile utilizzare layout_weight di LinearLayout per posizionare e ridimensionare l'immagine in alto, in termini di percentuale dello schermo:

<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

Quanto sopra dovrebbe dimensionare top_image al 50% dello schermo con un offset del 20% da sinistra. Finché top_image è del 50% la dimensione di bottom_image, questo manterrà una scala simile.

In alternativa, il modo "giusto" per eseguire questa operazione è probabilmente quello di ignorare onDraw() in una vista personalizzata e utilizzare i metodi di disegno su tela.

0

È possibile utilizzare il metodo di classe CanvasdrawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) per disegnare la bitmap specificata ridimensionando/convertendo automaticamente per riempire il rettangolo di destinazione. Questo può essere usato sia per le bitmap con Rect differenti. Il Rect può essere formulato dividendo la larghezza e l'altezza attuali del layout. In modo che il programma ridimensiona le immagini in base a dispositivi con dimensioni dello schermo diverse.

Problemi correlati