Autore Topic: inserire un background con gradient in un layout  (Letto 5025 volte)

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
inserire un background con gradient in un layout
« il: 19 Maggio 2010, 12:39:25 CEST »
0
Non mi intendo assolutamente di grafica, quindi chiedo a voi lumi.

Ho un header in una mia activity in cui mostro un titolo. Vorrei poter mettere in queto header un background colorato con gradiente.
Come posso fare?

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:inserire un background con gradient in un layout
« Risposta #1 il: 19 Maggio 2010, 13:03:45 CEST »
+1
Puoi definire un gradiente in questo modo:
File /res/drawable/my_gradient.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <gradient
                android:startColor="@color/black"
                android:centerColor="@color/white"
                android:endColor="@color/black"
                android:angle="0" />
</shape>

e poi impostarlo come sfondo del tuo header.

L'attributo centerColor è opzionale e se non ti interessa puoi eliminarlo.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:inserire un background con gradient in un layout
« Risposta #2 il: 19 Maggio 2010, 13:27:51 CEST »
0
e immagine che @color/black lo debba definire io... posso chiederti come? sulle reference non trovo nulla.

EDITO: trovato  ;-)

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:inserire un background con gradient in un layout
« Risposta #3 il: 24 Maggio 2010, 11:05:24 CEST »
0
Perdonate l'intrusione, ma stavo rubacchiando il codice perché serviva pure amme...ma creando un file e incollando il codice Eclipse mi da errore! sostiene di non aver mai conosciuto gente come "startColor", "centerColor" e "endColor"...idee?

grazie millemila :P

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:inserire un background con gradient in un layout
« Risposta #4 il: 24 Maggio 2010, 13:04:30 CEST »
0
SDK Target? Potresti postare uno screenshot di eclipse con l'errore?
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:inserire un background con gradient in un layout
« Risposta #5 il: 24 Maggio 2010, 13:32:33 CEST »
0
ciao, grazie della pronta risposta, purtroppo la spiegazione precisa dell'errore la leggo da un popup quando passo il mouse e quindi non posso darti uno screenshot, però ti riporto:
- SDK target: 2.1
- errore: "Error: no resource found that matches the given name (at 'startColor' with value '@color\black')"

tra l'altro ho pensato all'inizio che il problema fosse @color, ed ho provato a settare direttamente nel layout dell'applicazione una cosa del genere: "android:background="@drawable/blue"

e mi da ancora errore: "Error: no resource found that matches the given name (at 'background' with value '@drawable\blue')"

il problema è che questo pezzo di codice l'ho copiato da QUI!!!  o_O HELP!  :-P

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:inserire un background con gradient in un layout
« Risposta #6 il: 24 Maggio 2010, 13:37:40 CEST »
0
Non è che manca startColor, manca la definizione dei colori nella tua applicazione :D

O crei un files colors.xml dentro values:
Codice (XML): [Seleziona]
<resources>
        <color
                name="white">@android:color/white</color>
        <color
                name="gray">#aaa</color>
        <color
                name="gray_dark">#333</color>
        <color
                name="black">@android:color/black</color>
        <color
                name="indian_red_1">#F75D59</color>
</resources>

O inserisci direttamente un colore definito in android:
Codice (XML): [Seleziona]
<gradient
               android:startColor="@android:color/black"
               android:centerColor="@android:color/white"
               android:endColor="@android:color/black"
               android:angle="0" />
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:inserire un background con gradient in un layout
« Risposta #7 il: 24 Maggio 2010, 15:39:14 CEST »
0
Perdona la niubbaggine, ma non vado più in là del mio naso...ero convinto che @color/black fosse la stessa cosa di @android:color/black. il mio intento era lavorare coi colori predefiniti, non pensavo di doverli definire...grazie mille!
ad ogni modo non funziona ancora...ho il file che hai indicato tu nella cartella drawable:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<shape
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
        <gradient
               android:startColor="#505b66"
               android:centerColor="@android:color/white"
               android:endColor="#505b66"
               android:angle="0" />
</shape>

e il file del layout dell'applicazione nella cartella layout che lo richiama così:
Codice (XML): [Seleziona]
                                android:background="@drawable/gradient" ma lo sfondo rimane bianco... o_O

scusa ancora, ma sti attributi xml mi fanno smadonnare proprio...
« Ultima modifica: 24 Maggio 2010, 15:42:52 CEST da ScarfaceIII »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:inserire un background con gradient in un layout
« Risposta #8 il: 24 Maggio 2010, 15:41:06 CEST »
0
Se mi posti un archivio di tutto il progetto te lo sistemo :P
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:inserire un background con gradient in un layout
« Risposta #9 il: 24 Maggio 2010, 15:48:57 CEST »
0
perdona se ti ho rotto le balle, ma sono leso evidentemente. Lo sfondo rimane bianco se guardo il "preview" in eclipse. Ora ho provato a farlo andare sul device e lo sfondo va bene, anche se ha una definizione bruttina (si vedono proprio le "barre" orizzontali" e il colore cambia per gradini), quindi penso di accantonarlo...a meno che hai suggerimenti per un migliore risultato

grazie mille e scusa ancora per tutto sto sclero inutile  O:-)

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:inserire un background con gradient in un layout
« Risposta #10 il: 24 Maggio 2010, 15:51:04 CEST »
0
Provalo sul n1, li dovrebbe vedersi bene ;)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Re:inserire un background con gradient in un layout
« Risposta #11 il: 24 Maggio 2010, 16:16:58 CEST »
0
eh purtroppo no...l'ho fatto andare proprio sul nexus one, ma si vede "a strisce" come ti ho detto...
sottolineo che è lo sfondo di tutta la schermata dell'applicazione e non solo del titolo come chiedeva noodles, magari c'è un maledetto parametro da settare che non conosco per la definizione, per cui su aree piccole non si nota, ma tutto lo schermo lo rende molto visibile...

Offline noodles

  • Utente junior
  • **
  • Post: 130
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Sistema operativo:
    Mac OS X Snow Leopard
Re:inserire un background con gradient in un layout
« Risposta #12 il: 24 Maggio 2010, 19:26:56 CEST »
0
la preview è bianca, è normale.

Confermo anche io che almeno sul N1 il gradiente non è eccezzionale, ma per quello che interessa a me va abb bene. Ho notato che se il colore di partenza e quello di arrivo non sono troppo "distanti" tra loro, l'effetto è migliore.