Italian Alternativa all'uso della NinePatch

Dominex

Active Member
Licensed User
Longtime User
Se trovate la NinePatch una funzione utile ma un po' scomoda da usare, ho scritto una nuova libreria per usare la stessa funzione con estrema semplicità, si chiama AlternativeNinePatch è la potete trovare qui.
 

LucaMs

Expert
Licensed User
Longtime User
Non ho mai avuto la pazienza di leggere fino alla fine un documento su 'sti NinePatch, mi sono sempre addormentato prima :).

Che hanno di speciale? Ricordo solo qualcosa sul fatto che si può dividere una immagine in zone (visibili o no? boh).

Cmq, immagino che la tua libreria sia molto utile a chi li conosce e mi invoglia a rileggere l'argomento.

Grazie
 

Dominex

Active Member
Licensed User
Longtime User
La Nine Patch è sostanzialmente un sistema grafico per creare un background di un view con un immagine che si adatta alle dimensioni del view.

Immagina di dover utilizzare delle Label di dimensioni differenti che grazie a un'unica immagine avranno tutte lo stesso sfondo dai bordi proporzionati.

Guarda l'esempio che ho allegato per capire bene di che si tratta.
 

LucaMs

Expert
Licensed User
Longtime User
Ok, grazie, lo guarderò (in questo momento sono impegnato a perdere a poker :))

Ma intendi dire per dare una forma alle view o solo uno sfondo? Perché immagino che usando il caricamento con sample, l'immagine si adatti già, no?

Devo cercare anche nel sito, ho visto alcune domande sui NinePatch.

Cmq, grz ancora
 

Dominex

Active Member
Licensed User
Longtime User
Ma intendi dire per dare una forma alle view o solo uno sfondo? Perché immagino che usando il caricamento con sample, l'immagine si adatti già, no?
Si ma con una considerevole differenza, la NinePatch non fa l'effetto stretch su tutta l'immagine, ma bensì crea una composizione.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Scusa se rompo... che intendi per "composizione"?


P.S. urgh, non posso caricare l'esempio, ho la v. 3.00 di B4A :(.

Cercherò di capire ugualmente, dal codice



[funziona anche nella 3.00]
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Non ho capito molto, lanciando l'esempio, è meglio che io "studi".

Comunque c'è una cosa strana: il bordo superiore è sempre (o forse quasi sempre) "seghettato", cioè non è mai una linea perfettamente orizzontale, qualunque opzione io selezioni.



P.S. ah, ho notato adesso che è imperfetta nelle immagini originali, sia button.png che button2.png
 

Dominex

Active Member
Licensed User
Longtime User
Un background creato con la NinePatch è una composizione di nove pezzi (ma va!), il bordo è composto da otto pezzi (quattro angoli e quattro segmenti centrali del bordo, destra, sinistra, alto, basso) più uno centrale.

Con l'esempio poi vedere appunto l'effetto con o senza l'uso della NinePatch.
 

LucaMs

Expert
Licensed User
Longtime User
Grazie per la spiegazione.

Sto studiando :).

Ho trovato un video, molto scarno e semplice, ma si capisce (dopo aver letto la documentazione in inglese su developer.android.com, chiara e semplice come il cubo di Rubik :p).

Praticamente, la tua libreria converte una png normale in una 9-patch, cosa che fà anche il tool fornito da google, ma lo fà runtime, se non ho capito male.

Non mi sconfinfera il fatto che se il testo contenuto in una view con questo tipo di sfondo "abbonda", la view viene automaticamente adattata (sempre se non ho capito male), perché la view stessa potrebbe poi debordare dal layout, no? A questo punto, anche se il tutto andrebbe evitato, meglio che venga troncato il testo, piuttosto che avere mezzo tasto visibile.
 

Dominex

Active Member
Licensed User
Longtime User
La NP si occupa solo dello sfondo, non del contenuto come ad esempio quello di una label.

Ho scritto questa libreria perché la NP originale richiede che l'immagine si nell'apposita cartella "res" all'interno dell'apk, che il file sia di sola lettura, e che i settaggi dell'immagine della NP avvengano tramite un'apposito tool, in pratica scomodissimo! Con la mia libreria lo fai via codice usando un immagine posta nella normale cartella dei file, tutto qui.
 

brelto85

Active Member
Licensed User
Longtime User
Ciao, vorrei chiederti se fosse possibile applicare l'effetto di ombra a delle view generiche e non a delle immagini
grazie ciao
 
Top