2011-09-28 8 views
5

Sto creando un'applicazione Android in cui voglio supporto per più schermi. Per questi ho usato 9 immagini di patch.Come utilizzare 9 immagini di patch in Android per densità di 2 differenti (come mdpi, ldpi, hdpi).?

Ma la mia domanda è questa se l'utilizzo di 9 immagini di patch sarà sufficiente per i vari dispositivi-2 di densità o io avrà bisogno di creare immagini di patch diversi-2 9 per variare densità (come MDPI, ldpi, hdpi).

Grazie in anticipo

+1

[Android Come utilizzare 9 patch di png] (http://adilsoomro.blogspot.com/2012/11/android-how-to-use-9-patch-png.html) –

risposta

17

di recente ho scoperto me stesso nella stessa situazione per cui vorrei lanciare dentro ed espandere su ciò che è già stato detto ...

Sì, le immagini 9-patch scala , questo è quello per cui esistono. Ma se dovessi usare un'immagine a 9 patch per tutte le densità dello schermo, ciò dipende davvero dall'immagine. Le immagini a 9 patch sono più comunemente utilizzate, ad esempio i pulsanti. Puoi avere pulsanti di dimensioni diverse nella tua app e un'immagine a 9 patch ti aiuterà a gestirli, indipendentemente dalla dimensione del tuo pulsante (purché l'immagine a 9 patch sia stata creata correttamente).

Ma supponiamo che il design del pulsante abbia degli angoli davvero arrotondati per la versione hdpi. Crei la tua immagine a 9 patch senza rovinare le curve, ma quando la guardi nella versione ldpi, ti renderai conto che i tuoi angoli sono troppo grandi per quella bassa risoluzione. Per questa situazione, avrai bisogno di una diversa immagine a 9 patch con meno angoli arrotondati, con un aspetto migliore in quella risoluzione.

Quindi, la risposta finale è, dipende davvero dalla tua immagine. Se riesci a creare un'immagine a 9 patch che abbia un bell'aspetto in tutte le densità, piuttosto che una multa, usala, poiché hai bisogno di una sola immagine per gestire tutte le densità. Ma se non ha un bell'aspetto, a causa di angoli, sfumature o altro, allora avrai bisogno di un'immagine a 9 patch per ogni densità dello schermo.

Speriamo che sia più chiaro ora.

+0

se l'immagine è un normale png e non 9patch png, l'immagine sarà ancora ridimensionata o il 9patch è un requisito reale per qualsiasi funzionalità di scala? – Vass

+1

@Vass L'immagine verrà ridimensionata se la tua vista ha una dimensione maggiore delle dimensioni dell'immagine. Ma l'immagine della 9 patch è utilizzata per il salvataggio da una copia. – AB1209

+0

@ AB1209, puoi dirmi cosa intendi con "salvataggio da copia"? – Vass

2

dalla documentazione: nine patch

Un grafico NinePatchDrawable è un'immagine bitmap estensibile, che Android ridimensionerà automaticamente per accogliere il contenuto della vista in cui avete posto come il sfondo. Un esempio di utilizzo di NinePatch sono gli sfondi utilizzati dai pulsanti standard di Android: i pulsanti devono essere allungati per contenere stringhe di varie lunghezze. Un drawable NinePatch è un'immagine PNG standard che include un bordo extra di 1 pixel. Deve essere salvato con l'estensione .9.png e salvato nella directory res/drawable/del tuo progetto.

la risposta è no. si in nove pezzi scalerà tra dimensioni dello schermo

+4

che non è del tutto corretto Sì, il ninepatch si ridimensiona ma è comunque necessario fornire le immagini ldpi/mdpi/hdpi perché anche le parti che non presentano una scala devono avere la dimensione corretta. –

+0

Ma per quanto riguarda le densità 2 differenti? Devo anche creare immagini a 9 pagine ad alta e bassa densità? – AB1209

+4

@ AB1209 NON DEVI ma puoi farlo se dovessi scoprire che le tue parti di NinePatch non si adattano bene. – rf43

0

La risposta breve è SÌ. Controllare questo:

Per impostazione predefinita, Android scale tuoi drawable bitmap (.png, .jpg, e .gif file) e nove-Patch drawable (.9.png file) in modo che essi rendono alla dimensione fisica adeguata su ogni dispositivo. Ad esempio, se l'applicazione fornisce i drawable bitmap solo per , la densità di base dello schermo (mdpi), il sistema li ridimensiona quando si trova su uno schermo ad alta densità e li ridimensiona quando si trova su uno schermo a bassa densità. Questo ridimensionamento può causare artefatti nei bitmap . Per garantire che le immagini bitmap risultino migliori, è necessario includere versioni alternative a risoluzioni diverse per densità di schermo diverse.

from Android Developer Official Doc