2014-10-18 15 views
6

Ho bisogno di creare un layout di ricevuta in Android. L'idea è molto semplice, un layout rettangolare con un bordo inferiore a zigzag.Ricevuta Android/tracciato a zigzag/layout

Il miglior risultato sarebbe un drawable/layout con dimensioni fisse zigzag (significato, dimensione fissa mezza triangolo), che moltiplicare la quantità di triangoli base alla larghezza effettiva della forma, in tempo reale. Forse con una clip, per avere triangoli troncati se necessario.

Ecco un buon esempio (Edit: mi riferisco alla linea a zig-zag in basso):

enter image description here

Io in realtà non hanno idea di come solida per crearlo. Pensiero di 9 patch, ma sembra inadatto. Pensi a livello di elenco disegnabile con offset orizzontali forse ..

Forse è possibile creare un patch 9 con sezioni di scala separate, per mantenere le proporzioni dello zigzag ... Anche questo sarebbe OK.

MODIFICA - RISPOSTA Utilizzando il commento di @Luksprog, ho facilmente ricreato ciò che volevo.
Ecco il codice:

immagine (si noti che l'altezza corrisponde alla dimensione dell'immagine sorgente):

<ImageView 
     android:id="@+id/zigzag_bottom" 
     android:layout_width="match_parent" 
     android:layout_height="12dp" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/zigzag" />  

drawable:

<?xml version="1.0" encoding="utf-8"?> 
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/ic_zigzag" 
     android:tileMode="repeat" 
     android:antialias="true" 
    /> 
+0

Thx, ma ti stai riferendo alla lista, e mi riferisco alla linea a zigzag in basso ... btw grazie per il montaggio! In realtà, forse è possibile ottenere con un ListView orizzontale! :) –

+0

Non è possibile creare un percorso di nove per quell'immagine. Si potrebbe semplicemente prendere uno dei denti a zig zag e usarlo in un bitmap disegnabile con la modalità di ripetizione impostata su di esso. – Luksprog

+0

@Luksprog perfetto! Così semplice: P Puoi rispondere per poter votare la tua risposta? Puoi usare il codice della mia risposta se lo desideri, aiuterà gli altri. –

risposta

2

Non è possibile effettuare un percorso di nove per questo immagine perché non c'è modo di definire un'area estensibile sul lato verticale o orizzontale. Per ottenere quel modello a zig-zag è possibile estrarre uno dei denti a zig-zag (insieme all'ombra di sfondo) e avvolgerlo in un BitmapDrawable che ha la proprietà tileMode per ripetere l'immagine avvolta all'interno dei limiti disegnabili. In questo modo il dente a zig-zag verrà ripetuto e comporrai lo schema.

nota che l'altezza corrisponde alla dimensione dell'immagine sorgente

Questo è uno scenario felice, ma si potrebbe farlo funzionare per il caso in cui l'altezza non corrisponde. Ad esempio, è possibile avvolgere lo zig-zag BitmapDrawable in un LayerDrawable (insieme al reale disegno estraibile (per il resto dell'area di visualizzazione)) e quindi utilizzare setLayerInset() per posizionare il drawable nella parte inferiore. È anche possibile creare il proprio drawable che posiziona l'immagine del modello a zig-zag in basso sostituendo il metodo onDraw().

+0

L'idea è buona, hai qualche esempio per questo. –

+2

Per favore guarda la domanda ... La risposta è (modificata) lì :) –

+0

https://medium.com/android-dev-br/repetir-at%C3%A9-encaixar-390ade3f57bd –

Problemi correlati