Autore Topic: Creare uno Slider interattivo rispetto al tocco  (Letto 1288 volte)

Offline ScarfaceIII

  • Utente junior
  • **
  • Post: 112
  • Respect: +13
    • raferalston12
    • Mostra profilo
  • Dispositivo Android:
    Nexus One
  • Sistema operativo:
    GNU/Linux, Ubuntu 10.04 / Windows 7
Creare uno Slider interattivo rispetto al tocco
« il: 03 Luglio 2010, 19:38:44 CEST »
0
So che il titolo è a metà tra il sanscrito e il malese, quindi cerco di spiegarmi meglio qui: dovrei creare un oggetto, tipo una barra, inizialmente vuota, che viene riempita "trascinando" la linea di riempimento. La situazione è simile all'avere un cilindro verticale visto dal lato, che viene riempito di liquido trascinando il livello di liquido verso l'alto. Oltre alla reazione al tocco dell'utente aggiornando il livello, vorrei avere come ritorno, anche il livello a cui è arrivato il liquido (tipo in %).

In realtà la mia applicazione non è un simulatore di un rubinetto :D ma il modo in cui deve funzionare questo oggetto è quello descritto...solo che non saprei quale elemento View poter utilizzare e come interagirci, avete qualche idea?

Eventualmente quello che potrei utilizzare è anche uno slider (tipo quelli usati per lo scroll delle pagine, per intenderci), con la possibilità di interagire sull'oggetto sia spostandolo, sia ricevendo come feedback la posizione relativa (ad esempio la % sulla lunghezza totale dell'oggetto) a cui si trova l'indicatore in questo momento.

Grazie mille dell'aiuto! ;)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Creare uno Slider interattivo rispetto al tocco
« Risposta #1 il: 03 Luglio 2010, 20:47:02 CEST »
+1
Postate il LogCat LogCat LogCat LogCat LogCat

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:Creare uno Slider interattivo rispetto al tocco
« Risposta #2 il: 03 Luglio 2010, 23:15:26 CEST »
0
stavo per pigiare RISOLTO, ma vedo dall'immagine che questo fantasmagorico oggetto (esattamente quello di cui avevo bisogno) è in orizzontale, a me serve tassativamente in verticale (rappresenta un acceleratore...se è in orizzontale, sembrerebbe uno sterzo...)!  :'( leggendo la reference linkata non ho trovato possibilità di settarne l'orientazione: sono asino io e non so come girarla o è proprio come l'ho vista?  o_O

grazie mille...
« Ultima modifica: 03 Luglio 2010, 23:49:48 CEST da ScarfaceIII »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Postate il LogCat LogCat LogCat LogCat LogCat

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:Creare uno Slider interattivo rispetto al tocco
« Risposta #4 il: 06 Luglio 2010, 00:56:17 CEST »
0
Sul web ho trovato queste due implementazioni custom:
http://groups.google.com/group/android-developers/browse_thread/thread/bec05b0368c20e03
Modifying the Android seekbar widget to operate vertically - Stack Overflow

MAMMA MIA!!! è esattamente quello di cui avevo bisogno!  :-P ma...posso domandare quale chiave hai utilizzato per la ricerca in mamma-google? o meglio: posso noleggiarti ogni volta che devo fare una ricerca in google? grazie infinite. ho implementato nella mia applicazione, appena posso, testo sul telefono e ti dico, magari posto anche uno screenshottino che nn fa male  :-P

grazie mille ancora!  8-)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re: Creare uno Slider interattivo rispetto al tocco
« Risposta #5 il: 06 Luglio 2010, 00:58:57 CEST »
0
Di nulla.. la ricerca che ho fatto è "vertical seekbar" ;)
Fammi sapere se riesci a implementarlo
Postate il LogCat LogCat LogCat LogCat LogCat

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:Creare uno Slider interattivo rispetto al tocco
« Risposta #6 il: 06 Luglio 2010, 01:13:15 CEST »
0
Ma, ho provato il primo link e l'activity d'esempio mi sembra soddisfacente. Non sono stato lì a fare prove approfondite con l'activity d'esempio, l'ho implementato direttamente nel mio progetto, che però non posso provare con l'emulatore perché richiede bluetooth, ad ogni modo appena ho tempo passo in laboratorio, rubo il telefono ad un collega, lo provo e posto i risultati dell'esperimento ;)

grazie ancora

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:Creare uno Slider interattivo rispetto al tocco
« Risposta #7 il: 13 Luglio 2010, 13:48:41 CEST »
0
Ciao, volevo aggiornare dicendo che va bene, la barra del secondo link va benissimo. Ho solo un problema però: il thumb della barra non si ridimensiona insieme ad essa!
cioè, se ad esempio setto la dimensione della barra tipo:
Codice (XML): [Seleziona]
android:layout_width="40dip" il thumb rimane piccolino e si allarga solo la barra. Stessa cosa, caso estremo, se metto "fill_parent"...

Any ideas?

grazie mille

EDIT: ho provato anche con la SeekBar base e fa la stessa cosa. magari c'è qualcosa che non so, quindi se qualcuno sa come sistemare la SeekBar normale, BEN VENGA!!!
« Ultima modifica: 13 Luglio 2010, 14:10:33 CEST da ScarfaceIII »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Creare uno Slider interattivo rispetto al tocco
« Risposta #8 il: 13 Luglio 2010, 14:26:54 CEST »
0
Questo dovrebbe essere il metodo che gestisce il cambiamento nella dimensione (dalla classe AbsSeekBar di cui SeekBar é figlia)

Codice (Java): [Seleziona]
@Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        Drawable d = getCurrentDrawable();
        Drawable thumb = mThumb;
        int thumbHeight = thumb == null ? 0 : thumb.getIntrinsicHeight();
        // The max height does not incorporate padding, whereas the height
        // parameter does
        int trackHeight = Math.min(mMaxHeight, h - mPaddingTop - mPaddingBottom);
       
        int max = getMax();
        float scale = max > 0 ? (float) getProgress() / (float) max : 0;
       
        if (thumbHeight > trackHeight) {
            if (thumb != null) {
                setThumbPos(w, thumb, scale, 0);
            }
            int gapForCenteringTrack = (thumbHeight - trackHeight) / 2;
            if (d != null) {
                // Canvas will be translated by the padding, so 0,0 is where we start drawing
                d.setBounds(0, gapForCenteringTrack,
                        w - mPaddingRight - mPaddingLeft, h - mPaddingBottom - gapForCenteringTrack
                        - mPaddingTop);
            }
        } else {
            if (d != null) {
                // Canvas will be translated by the padding, so 0,0 is where we start drawing
                d.setBounds(0, 0, w - mPaddingRight - mPaddingLeft, h - mPaddingBottom
                        - mPaddingTop);
            }
            int gap = (trackHeight - thumbHeight) / 2;
            if (thumb != null) {
                setThumbPos(w, thumb, scale, gap);
            }
        }
    }
e che quindi dovresti potere modificare per le tue esigenze ;)
Postate il LogCat LogCat LogCat LogCat LogCat

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:Creare uno Slider interattivo rispetto al tocco
« Risposta #9 il: 13 Luglio 2010, 21:42:47 CEST »
0
eh...sospettavo!
solo che appena gli ho dato un'occhiata stavo svenendo...proverò...al massimo avrai mie notizie! :P

grazie di tutto...

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:Creare uno Slider interattivo rispetto al tocco
« Risposta #10 il: 18 Luglio 2010, 13:45:32 CEST »
0
Dopo due righe ho già dei problemi. Posso chiedere cosa significa questa riga:
Codice (Java): [Seleziona]
        int thumbHeight = thumb == null ? 0 : thumb.getIntrinsicHeight();
E' un costrutto che viene usato più volte in quel segmento di codice, ma mi è ignoto e per altro non saprei come googlarlo, visto che si compone di '?' e ':', due simboli comunissimi...non è come cercare "ciclo for", per dire...

grazie dell'aiuto...

EDIT: allora, forse ho capito. Ho divinato il volo di alcuni uccelli e letto il fondo di una tazza da té e mi hanno fatto capire questo:
- il codice di cui sopra è una specie di "assegnamento con test"
- significa "controlla se thumb == null. Se è vero, allora thumbHeight = 0, altrimenti se il test è falso, thumbHeight = thumb.getIntrinsicHeight()".

correggetemi se sbaglio, riprendo il lavoraccio! :P
« Ultima modifica: 18 Luglio 2010, 14:41:17 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:Creare uno Slider interattivo rispetto al tocco
« Risposta #11 il: 18 Luglio 2010, 15:16:02 CEST »
0
significa "controlla se thumb == null. Se è vero, allora thumbHeight = 0, altrimenti se il test è falso, thumbHeight = thumb.getIntrinsicHeight()".

E già, si chiama Operatore Ternario e la riga da te citata si potrebbe riscrivere così:
Codice (Java): [Seleziona]
int thumbHeight;
if(thumb == null)
   thumbHeight = 0;
else
   thumbHeight = thumb.getIntrinsicHeight();
« Ultima modifica: 18 Luglio 2010, 15:21:45 CEST da JD »
È 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:Creare uno Slider interattivo rispetto al tocco
« Risposta #12 il: 18 Luglio 2010, 15:26:05 CEST »
0
yeah! c'avevo preso!!!
però non ci capisco un cazzo lo stesso...sto maledetto bottone non riesce a rispondere al mio volere. Sono riuscito a fare in modo che viene ridimensionato in base alla dimensione della larghezza della barra (credo), c'è sempre un offset che lo fa rimanere un po' più piccolo della barra...io addirittura lo vorrei leggermente più largo!!!  o_O

grazie dell'aiuto...ora passo ad una delle altre mille cose che ho da fare, così "stacco un po'"  :'(