Domanda

C'è un modo standard per fare le mie applicazioni personalizzabile?

Con il termine "personalizzabile" intendo la capacità dell'applicazione per supportare più le pelli.

Non mi è indirizzato ad alcuna particolare piattaforma qui. Voglio solo sapere se ci sono linee guida generali per la richiesta personalizzabile.

Sembra che la scuoiatura le applicazioni web è relativamente facile. Che dire di applicazioni desktop?

È stato utile?

Soluzione

Skins sono solo un ulteriore livello di astrazione (YALOA!).

Se avete letto sul MVC design pattern poi capirete molti dei principi necessari.

Il livello di presentazione (o pelle) ha solo per fare un paio di cose:

  • Mostra l'interfaccia
  • Quando determinate azioni sono prese (cliccando, l'immissione di testo in una scatola, ecc), allora si innesca azioni
  • Deve ricevere le comunicazioni dal modello e il controller quando è necessario cambiare

In un normale programma questa astrazione viene fatto avendo codice che collega le caselle di testo per i metodi e gli oggetti vengono riportate, ed avente codice che cambia la visualizzazione in base ai comandi del programma.

Se si desidera aggiungere la scuoiatura è necessario prendere che la capacità e fare in modo che si può fare senza compilare nuovamente il codice.

check-out, per esempio, XUL e vedere come è fatto lì. Troverete un sacco di scuoiatura progetti utilizzano XML per descrivere le varie 'facce' della pelle (è la riproduzione di musica, o per organizzare la libreria per una pelle lettore MP3), e poi dove si trova ogni controllo e quali dati e metodi informatici deve essere allegata al programma.

Può sembrare difficile fino a quando lo si fa, allora ci si rende conto che è proprio come qualsiasi altro livello di astrazione che hai affrontato prima (da un programma con goto, per il controllo delle strutture, alle funzioni, alle strutture, alle classi e oggetti , ai compilatori JIT, ecc).

La curva di apprendimento iniziale non è banale, ma fare alcuni progetti e troverete non è difficile.

-Adam

Altri suggerimenti

Tenere tutti gli stili in un file CSS separato (s)

Stare lontano da qualsiasi styling in linea

In realtà dipende da come "personalizzabile" si desidera che le applicazioni siano. Lasciando l'utente di configurare i colori e le immagini sta per essere molto più facile che lasciarli nascondono / rimuovere componenti o anche scrivere i propri componenti.

Per la maggior parte dei casi, probabilmente si può ottenere via con la scrittura un qualche tipo di risorsa Provider che serve colori e immagini invece di hardcoding nel file di origine. Quindi, in questo modo:

Color backgroundColor = Color.BLUE;

sarebbe diventato qualcosa di simile:

Color backgroundColor = ResourceManager.getColor("form.background");

Poi, tutto quello che dovete fare è cambiare le mappature della tua classe ResourceManager e tutti i client saranno coerenti. Se si vuole fare questo in tempo reale, cambiando una delle mappature del ResourceManager probabilmente inviare un evento per i suoi clienti e comunicare loro che qualcosa è cambiato. Poi i clienti possono ridisegnare i loro componenti, se vogliono.

L'attuazione varia a seconda della piattaforma, ma qui ci sono un paio di considerazioni generali cross-platform:

  • E 'bene avere un layout complessivo stabilito in cui elementi visivi possono essere "collegati". È più difficile (ma ancora possibile) per supportare completamente diversi layout generale attraverso scuoiatura.
  • Sviluppare una convenzione di denominazione ben documentata per le attività (immagini, frammenti HTML, etc.) che compongono una pelle.
  • Progettare un modo pulito per "scoprire" le pelli esistenti e aggiungerne di nuovi. Per esempio: Winamp utilizza un formato di file ZIP per memorizzare tutte le immagini per le sue pelli. Tutti i file della pelle si trovano in una cartella ben noto al largo della cartella dell'applicazione.
  • Essere consapevoli dei problemi di scala. Non tutti usano la stessa risoluzione dello schermo.
  • Hai intenzione di consentire lo sviluppo della pelle di terze parti? Questo influenzerà il vostro disegno.
  • punto di vista architettonico, il pattern Model-View-Controller si presta a scuoiatura.

Queste sono solo alcune delle cose di essere a conoscenza. L'implementazione varierà tra web e fat client, e per le vostre esigenze di funzionalità. HTH.

Il principio di base è quello utilizzato da CSS nelle pagine web.

Piuttosto che mai specificare la formattazione (colore / font / disposizione [in una certa misura]) del suo sito web, è sufficiente descrivere che tipo di contenuti è.

Per fare un esempio web, nel contenuto di una pagina del blog si potrebbe contrassegnare diverse sezioni ad essere una:

  1. Titolo
  2. Blog Entry
  3. Archivio Pane

ecc.

La voce può essere fatto di sottosezioni severl come "voce", "corpo" e "timestamp".

Poi, altrove, si dispone di un foglio di stile che specifica tutte le proprietà di ogni tipo di elemento, dimensione, allineamento, colore, sfondo, font ecc Quando il rendering della pagina o srawing / inizializzazione le componatns nella vostra interfaccia utente di consultare sempre la corrente foglio di stile per cercare queste proprietà.

Quindi, la scuoiatura, e in effetti la modifica del disegno, diventa molto più facile. È semplice creare un foglio di stile diverso e ottimizzare i valori al contenuto del vostro calore.

Modifica:

Un punto fondamentale da ricordare è la distinzione tra uno stile generale (come le classi di CSS) e uno stile specifico (come ID del nei CSS). Si vuole essere in grado di identificare in modo univoco alcuni elementi nel layout, come ad esempio la voce, come un singolo elemento identificabile che è possibile applicare uno stile unico a, mentre gli altri elementi (come ad esempio una voce in un blog, o un campo in una vista di database) saranno tutti vogliono avere lo stesso stile.

E 'diverso per ogni piattaforma / tecnologia.

Per WPF, dare un'occhiata a ciò che Josh Smith chiama scuoiatura strutturale: http: / /www.codeproject.com/KB/WPF/podder2.aspx

Questo dovrebbe essere relativamente facile, attenersi alla seguente procedura:

  1. Striscia tutte styling per l'intera applicazione web o al sito web
  2. Usa CSS per modificare il modo in cui la vostra applicazione sembra.

Per ulteriori informazioni visita il sito css giardino zen per le idee.

Non dovresti. O almeno ci si dovrebbe chiedere se è davvero la scelta giusta.

Creare rompe le linee guida di progettazione dell'interfaccia utente. It "giare" l'utente perché la vostra applicazione dalla pelle funziona e sembra totalmente diversa da tutte le altre applicazioni che utilizzano la loro. Cose come i tasti di scelta rapida dei comandi non saranno coerenti e faranno perdere la produttività. Sarà meno portatori di handicap perché i lettori di schermo avrà un tempo più difficile comprensione.

Ci sono un sacco di ragioni per non pelle. Se si desidera solo per rendere l'applicazione visivamente distinte, che è una ragione poveri a mio parere. Farete la vostra applicazione più difficile da usare e meno probabile che la gente potrà mai andare al di là del periodo di prova.

Detto questo, ci sono alcune classi di applicazioni in cui scuoiatura è sostanzialmente previsto, come i lettori multimediali e imersive giochi a schermo intero. Ma se la vostra applicazione non è in una classe dove scuoiatura è in gran parte affidato, vorrei seriamente in considerazione trovare altri modi per rendere la vostra applicazione migliore rispetto alla concorrenza.

A seconda di quanto in profondità si vuole scavare, è possibile scegliere di utilizzare un quadro di 'formattazione' (ad esempio PLAF di Java, CSS del web), o un tier multipla totalmente disaccoppiato.

Se si desidera definire una pelle pluggable, è necessario considerare che fin dall'inizio. Il livello di presentazione sa non per la logica di business, ma è API e viceversa.

Sembra che la maggior parte delle persone qui si riferiscono a CSS, come se l'unica opzione di skinning. Windows Media Player (e Winamp, AFAIR) utilizzare XML così come le immagini (se necessari) per definire una pelle.

I riferimenti XML ganci, eventi, ecc e maniglie come stanno le cose e reagiscono. Io non sono sicuro di come gestire il back-end, ma il caricamento di una determinata pelle è davvero così semplice come localizzare il file XML del caso, il caricamento delle immagini poi mettendo loro dove devono andare.

XML ti dà anche molto più controllo su ciò che si può fare (vale a dire creare nuovi componenti, le dimensioni dei componenti del cambiamento, ecc.).

XML combinato con CSS potrebbe dare risultati meravigliosi per un motore di skinning di un'applicazione desktop o web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top