Autore Topic: riempire sfondo al X%  (Letto 1670 volte)

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
riempire sfondo al X%
« il: 15 Febbraio 2012, 21:29:38 CET »
0
volevo fare uno sfondo che arrivava al 70/60/50/...% in base ad una variabile...
c'e' un modo per farlo?

del tipo


XXXXXXXXXXXYYY


praticamente fare una cosa tipo questa

ma sullo sfondo
« Ultima modifica: 15 Febbraio 2012, 21:46:51 CET da Trigun »

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:riempire sfondo al X%
« Risposta #1 il: 18 Febbraio 2012, 16:04:29 CET »
0
io farei un layout come sfondo con widht =1...poi dal java modifichi i valori di widht.
per farlo in modo che vada su tutti i display, dovrai ottenere le dimensioni dello schermo e poi dividerlo per il numero di settori che vuoi fare..
una cosa del genere:
DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        ht = displaymetrics.heightPixels;
        wt = displaymetrics.widthPixels;
int dimensioneSettori=wt/10;
int settore1=dimensioneSettori*1;
int settore2=dimensioneSettori*2;
int settore3=dimensioneSettori*3;
etc..
poi con questi dati vai a settare le dimensioni di widht.
se li setti direttamente, i pezzi colorati compariraano di colpo quando dai il comando, se vuoi un effetto crescente puoi fare un runnable che aumenta la dimensione di 1 fino a che raggiunge la dimensione voluta.
se vuoi vedere l'effetto che ne risulta, guarda la mia app 'luce forte free' e dal menu vai in luce romantica..li vedi l'effetto dall'alto al basso, tu lo avresti laterale..(non è ancora disponibile l'aggiornamento con quella funzione..lo troverai tra un'oretta)
« Ultima modifica: 18 Febbraio 2012, 16:07:44 CET da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: riempire sfondo al X%
« Risposta #2 il: 03 Marzo 2012, 12:04:50 CET »
0
Domanda banale... Come faccio a fare un layout come sfondo? Cioè io voglio applicare questo sfondo sotto ad un testo... Io ho una listview con dentro una textview (tra l'altro di dimensione variabile) e volevo mettere in evidenza questa in base ai numeri che conteneva (praticamente è uno storico e volevo evidenziare i dati più rilevanti e in base a quanto effettivamente erano rilevanti)

Inviato dal mio GT-I9100 usando Tapatalk

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:riempire sfondo al X%
« Risposta #3 il: 03 Marzo 2012, 15:36:03 CET »
+1
le listview non le ho mai usate quindi forse quello che ti dico non si può fare nella list view, in un layout normale potresti fare cosi:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical"
   android:background="#ffffff">

    <RelativeLayout
       android:id="@+id/relativeLayout1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >



        <LinearLayout
           android:id="@+id/layout da accorciare e allungare"
           android:layout_width="200dp"
           android:layout_height="20dp"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:background="#68ff00">


        </LinearLayout>

            <TextView
               android:id="@+id/textView1"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_alignParentLeft="true"
               android:layout_alignParentTop="true"
               android:text="TextView textview"
               android:textColor="#000000"/>
       
    </RelativeLayout>

il layout che ho chiamato "layout da accorciare e allungare" è quello a cui devi cambiare la lunghezza dal java per creare il grafico..
prova a vedere se riesci a inserire qualcosa di simile nella list view.
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:riempire sfondo al X%
« Risposta #4 il: 03 Marzo 2012, 19:26:03 CET »
0
non l'ho ancora provato ma in questo modo il layout non va a spostare la textview?



Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/rigaordine"
   android:layout_width="fill_parent"
   android:layout_height="match_parent"
   android:gravity="bottom"
   android:orientation="horizontal" >

    <LinearLayout
       android:id="@+id/linearLayout1"
       android:layout_width="0dp"
       android:layout_height="match_parent"
       android:layout_weight="1"
       android:orientation="vertical" >

        <LinearLayout
           android:id="@+id/linearLayout2"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:gravity="left"
           android:orientation="horizontal" >

            <TextView
               android:id="@+id/infotxt"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="1"
               android:background="@drawable/gray"
               android:gravity="center_vertical"
               android:textSize="@dimen/infoText" >
            </TextView>

            <TextView
               android:id="@+id/infotxt2"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="3"
               android:background="@drawable/green"
               android:textSize="@dimen/infoText" >
            </TextView>
        </LinearLayout>

        <TextView
           android:id="@+id/nome"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:gravity="center_vertical"
           android:textSize="@dimen/nameText"
           android:textStyle="italic|bold" >
        </TextView>
    </LinearLayout>

    <TextView
       android:id="@+id/history"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:bufferType="spannable"
       android:textSize="@dimen/historyText"
       android:textStyle="bold" >
    </TextView>

    <Button
       android:id="@+id/sottrai"
       android:layout_width="60dp"
       android:layout_height="fill_parent"
       android:text="-"
       android:textSize="30dp" />

    <TextView
       android:id="@+id/quantita"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="#990000"
       android:gravity="center"
       android:textColor="#FFFFFF"
       android:textSize="50dp"
       android:textStyle="bold" />

    <Button
       android:id="@+id/aggiungi"
       android:layout_width="60dp"
       android:layout_height="fill_parent"
       android:text="+"
       android:textSize="30dp" >
    </Button>
    <!--
   <ImageView
       android:id="@+id/info"
       android:layout_width="wrap_content"
       android:layout_height="fill_parent"
       android:src="@drawable/infobutton" >
   </ImageView>
   -->

</LinearLayout>

questa è la mia riga ...
se mettessi la linearlayout mi andrebbe semplicemente a spostare il resto no?
io vorrei fare che la text history abbia in sfondo questa barra che si riempe in base al peso della storia ...
tra l'altro la textview è di lunghezza variabile in base ad una variabile nel programma (ho fatto un setting dove configurarla) e diciamo che normalmente è del tipo N N N N.... (raramente NN) quindi potrei mettere la dimensione prendendo quando dp occupa " N" e moltiplicarla per il peso e il peso lo calcolo in base alla variabile della lunghezza... pero' mi rimane il problema di come posso mettere la barra sotto la textview senza far spostare tutto :-)


Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:riempire sfondo al X%
« Risposta #5 il: 04 Marzo 2012, 13:51:30 CET »
0
devi usare i relativeLayout per fare quello che dico io..con il relativeLayout puoi sovrappore i layout senza che interferiscano uno con l'altro..
se utilizzi i linearlayout non puoi assolutamente fare quello che dico, perchè ogni layout va a interferire con gli altri
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: riempire sfondo al X%
« Risposta #6 il: 04 Marzo 2012, 14:03:54 CET »
0
Ah capito ora appena riesco a sistemare un altro problema ci provo... Mi è esploso il database e non mi parte più il programma...


Inviato dal mio GT-I9100 usando Tapatalk

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:riempire sfondo al X%
« Risposta #7 il: 04 Marzo 2012, 16:16:48 CET »
0
ok funziona con il relative :-) solo che non so come trovare la lunghezza del campo... ho provato a usare la funzione getWidth() ma come ho letto anche su internet finchè il layout non viene creato è sempre = 0... quindi non posso usarla per fare i calcoli inizialmente... e devo trovare una soluzione alternativa...
il problema è che essendo una lista devo mettere questa funzione nel mio adapter... e l'adapter viene usato anche quando il layout non è ancora stato creato.. quindi se usassi la funzione mi funzionerebbe solo dopo averlo scrollato... perchè all'inizio è = a 0...

Codice: [Seleziona]
03-04 16:17:36.730: V/adapter(29166): x0
03-04 16:17:36.800: V/adapter(29166): x0
03-04 16:17:36.880: V/adapter(29166): x0
03-04 16:17:36.960: V/adapter(29166): x0
03-04 16:17:37.030: V/adapter(29166): x0
03-04 16:17:37.100: V/adapter(29166): x0
03-04 16:17:37.170: V/adapter(29166): x0
03-04 16:17:37.240: V/adapter(29166): x0
03-04 16:17:37.320: V/adapter(29166): x0
03-04 16:17:37.410: V/adapter(29166): x0
03-04 16:17:37.490: V/adapter(29166): x0
03-04 16:17:37.560: V/adapter(29166): x0
03-04 16:17:37.630: V/adapter(29166): x0
03-04 16:17:37.700: V/adapter(29166): x0
03-04 16:17:40.800: V/adapter(29166): x0
03-04 16:17:40.880: V/adapter(29166): x42
03-04 16:17:40.910: V/adapter(29166): x42
03-04 16:17:40.950: V/adapter(29166): x42
03-04 16:17:41.060: V/adapter(29166): x42
03-04 16:17:41.130: V/adapter(29166): x42
03-04 16:17:41.160: V/adapter(29166): x42
03-04 16:17:41.240: V/adapter(29166): x42
03-04 16:17:41.270: V/adapter(29166): x42
03-04 16:17:41.340: V/adapter(29166): x0
03-04 16:17:41.430: V/adapter(29166): x42
03-04 16:17:41.470: V/adapter(29166): x42
03-04 16:17:41.500: V/adapter(29166): x42
03-04 16:17:41.570: V/adapter(29166): x0
03-04 16:17:41.700: V/adapter(29166): x42
03-04 16:17:41.730: V/adapter(29166): x42
03-04 16:17:41.760: V/adapter(29166): x42
03-04 16:17:41.850: V/adapter(29166): x42
03-04 16:17:42.000: V/adapter(29166): x42
03-04 16:17:42.180: V/adapter(29166): x42
03-04 16:17:42.320: V/adapter(29166): x42
03-04 16:17:43.210: V/adapter(29166): x42

come si nota dal logcat all'inizio è 0 e quando incomincio a scrollar è 42
« Ultima modifica: 04 Marzo 2012, 16:20:22 CET da Trigun »

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:riempire sfondo al X%
« Risposta #8 il: 04 Marzo 2012, 16:50:30 CET »
0
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/rigaordine"
   android:layout_width="fill_parent"
   android:layout_height="match_parent"
   android:gravity="bottom"
   android:orientation="horizontal" >

    <LinearLayout
       android:id="@+id/linearLayout1"
       android:layout_width="0dp"
       android:layout_height="match_parent"
       android:layout_weight="1"
       android:orientation="vertical" >

        <LinearLayout
           android:id="@+id/linearLayout2"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:gravity="left"
           android:orientation="horizontal" >

            <TextView
               android:id="@+id/infotxt"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="1"
               android:background="@drawable/gray"
               android:gravity="center_vertical"
               android:textSize="@dimen/infoText" >
            </TextView>

            <TextView
               android:id="@+id/infotxt2"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="3"
               android:background="@drawable/green"
               android:textSize="@dimen/infoText" >
            </TextView>
        </LinearLayout>

        <RelativeLayout
           android:id="@+id/relativeLayout1"
           android:layout_width="wrap_content"
           android:layout_height="match_parent" >

            <LinearLayout
               android:id="@+id/historymarker"
               android:layout_width="30dp"
               android:layout_height="match_parent"
               android:layout_alignParentLeft="true"
               android:layout_centerVertical="true"
               android:background="#68ff00" >
            </LinearLayout>

            <TextView
               android:id="@+id/nome"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:gravity="center_vertical"
               android:textSize="@dimen/nameText"
               android:textStyle="italic|bold" >
            </TextView>
        </RelativeLayout>
    </LinearLayout>

    <TextView
       android:id="@+id/history"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:bufferType="spannable"
       android:gravity="center_vertical"
       android:textSize="@dimen/historyText"
       android:textStyle="bold" />

    <Button
       android:id="@+id/sottrai"
       android:layout_width="60dp"
       android:layout_height="fill_parent"
       android:text="-"
       android:textSize="30dp" />

    <TextView
       android:id="@+id/quantita"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:background="#990000"
       android:gravity="center"
       android:textColor="#FFFFFF"
       android:textSize="50dp"
       android:textStyle="bold" />

    <Button
       android:id="@+id/aggiungi"
       android:layout_width="60dp"
       android:layout_height="fill_parent"
       android:text="+"
       android:textSize="30dp" >
    </Button>
    <!--
   <ImageView
       android:id="@+id/info"
       android:layout_width="wrap_content"
       android:layout_height="fill_parent"
       android:src="@drawable/infobutton" >
   </ImageView>
   -->

</LinearLayout>

praticamente sono giunto a questa conclusione..
ora mi rimane solo il problema di come trovare la lunghezza della textview durante la fase di caricamento...
mammamia che limiti del cavolo che ha android...

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:riempire sfondo al X%
« Risposta #9 il: 04 Marzo 2012, 16:59:25 CET »
0
non ho capito cosa vorresti fare..
la % di riempimento del layout dipende dal numero di lettere che ci sono nella textview o da quello che c'e' scritto dentro?
in ogni caso potresti risolvere il problema della lunghezza 0 (non ancora creato) mettendo una variabile tipo int lunghezza=1...in modo che anche se non è ancora creato ti ritorna 1..poi nel momento in cui viene creato vai a modificare questo in questo modo:
lunghezza=textview.getWidth();
non so se ho scritto giusto che con il cellulare è un macello..ma il senso mi sembra abbastanza chiaro (sempre che si possa adattare alle tue esugenze che non ho capito  )
« Ultima modifica: 04 Marzo 2012, 17:04:21 CET da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: Re:riempire sfondo al X%
« Risposta #10 il: 04 Marzo 2012, 17:02:54 CET »
0
non ho capito cosa vorresti fare..
la % di riempimento del layout dipende dal numero di lettere che ci sono nella textview o da quello che c'e' scritto dentro?
Dipende da quello che c'è scritto dentro ma per sapere la % devo prima sapere quanto è lunga la textview per fare i calcoli...

Trovo la lunghezza della textview... Divido questa per 100 e molteplico per la mia %

Inviato dal mio GT-I9100 usando Tapatalk

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:riempire sfondo al X%
« Risposta #11 il: 04 Marzo 2012, 17:05:29 CET »
0
hai preceduto il mio edit :D rileggi il post sopra che lo stavo modificando mentre hai risposto ^^
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
R: riempire sfondo al X%
« Risposta #12 il: 04 Marzo 2012, 17:07:04 CET »
0
Ora ti metto uno screen del programma così ti faccio vedere

Inviato dal mio GT-I9100 usando Tapatalk

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:riempire sfondo al X%
« Risposta #13 il: 04 Marzo 2012, 17:14:28 CET »
0
allora quello che vorrei fare io è riempire la barra che ora ho messo fissa in base ai numeri dopo.... ad es crokette pollo che ha "1 0 0 1 0 0" la voglio riempire al 40%
mentre quelli che hanno 0 0 0 0 0 0 devono avere la barra a 0dp...
il problema ora è come calcolare il 40% in quanto per sapere a quanto corrisponde il 40% dovrei prima di tutto conoscere la lunghezza della textview...
per conoscere la lunghezza però ho il problema che non posso farlo in fase di costruzione...

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:riempire sfondo al X%
« Risposta #14 il: 04 Marzo 2012, 17:35:05 CET »
0
vediamo se ho capito :D
la barra al 100% dovrebbe colorarsi fino a coprire la textview con il nome dell'articolo..lasciando chiara la parte con 0 0 0 0 0 0..
se è cosi, potresti cambiare modo..per esempio quando viene caricata questa pagina, esistono gia degli articoli ? se esistono gia, potresti creare un int basandoti sulla lunghezza di quello gia esistente e utilizzare sempre quello (da quello che vedo sono tutti della stessa lunghezza).

altro modo potrebbe essere prendere la larchezza totale dello schermo e sottrarci le dimensioni dei bottoni (che ho visto le hai messe fisse) e della textview contenente i numeri (dovresti mettere fisse anche queste pero')..

purtroppo non so dirti un modo preciso perchè non so come vengono creati questi layout.. bisognerebbe conoscere il funzionamento della app e della creazione delle linee..
pero' secondo me se in questo layout crei una riga identica a quelle che hai postato prima, ma lasciando height a 1 (quindi invisibile) potresti utilizzarla per prendere le dimensioni di tutti gli altri, se sono tutti uguali..
vedo una marea di modi per poterlo fare, ma dipende tutto da come si muove la tua app :(
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!