Capisco.. beh, allora, buon lavoro... vi continuo a seguire e aspetto altre release... sarò sempre il primo a provarle ;)
Visualizzazione stampabile
Be 10 minuti sono esagerati! Io settere i di default 30 minuti, comunque prima di dire preferisco vedere sul campo :D
per quanto riguarda il problema del touch che vi avevo detto (ogni tanto la barra sembra impallarsi) credo non sia di semplice comprensione perchè in quei momenti nonostante ci sia il touch non viene richiamata la funzione onTouch!
xD ... n effetti ahuahuahu.. im sorry! :D
Ho visto un attimo il codice... Intanto... Da quello che hai scritto è:
Capisci che le condizioni che scatenano l'evento non possono essere entrambe verificate nello stesso momento (sempre che io abbia capito correttamente il codice)codice:if (barra-del-drawer è sul bordo-basso AND barra-del-drawer è sul bordo-alto) // Ovvero se tutte e 2 le condizioni sono verificate
then fai il movimento // (che devo ancora studiare bene perché non l'ho capito)
Ho fatto una modifica in base a questa interpretazione:
EDIT: Mi sono permesso di spostare le immagini dal drawable-hdpi al drawable-mdpi e ridimensionarle in modo da rendermi possibile la prova con il layout "completo" (per quanto possa essere completo ora) anche sul mio SGAPcodice:if (barra-del-drawer è sul bordo-basso XOR barra-del-drawer è sul bordo-alto) // Ovvero se una delle 2 condizioni è verificata //(se la prima è vera NON controlla più l'altra)
then fai il movimento
Hai sbagliato l'interpretazione:
piccola precisazione il valore di y del touch cresce la avvicinarsi del dito al limite inferiore dello scermo (quindi il limite alto dello scermo avrà y=0, quello inferiore la y totale dello scermo)
if (y >= (dropdownbar2.getTop() - TOLLERANCE_TOP)
if (y >= (attacco alto della barra - tolleranza))
Quindi se y più piccolo dell'attacco della barra (quindi in parole povere la y del touch è più in basso dell'attacco superiore della barra)
if (y <= (dropdownbar2.getBottom() + TOLLERANCE_BOTTOM )))
if (y <= (attacco sotto della barra + tolleranza)
Quindi se y è più grande dell'attacco inferiore della barra (quindi in parole povere la y del touch è più in alto dell'attacco inferiore della barra)
Ho aggiunto poi la tolleranza che è una costante che fa in modo che il launcher considera movimento della barra anche se uno tocca un pò sopra o un pò sotto essa (crea però dei problemi, basti vedere cosa succede se uno vuole toccare la icona su sfondo giallo, quindi si dovrà mettere un check anche della x)
Quindi alla fine quell' if fa in modo che la barra si sposti SOLO SE il touch è sia sotto la parte alta della barra che sopra la parte bassa quindi il touch può essere solo sulla barra
Tornando al problema di prima probabilmente mi sono spiegato male io ; logcattando si vede che in quei momenti in cui si inceppa la funzione onTouch non viene richiamata nonostante si clicchi!! Il problema non è che l'if non viene verificato proprio mettendo un Log.e("cscs", "BLABLABLA"); non esce niente in quei momenti, mentre invece quando funziona si vede che viene eseguito... ; è una cosa molto strana! :o
Quello serve per evitare che appena uno tocca troppo la barra si comprima, quindi appena il touch è sotto la grandezza della barra automaticamente viene settata la posizione più bassa prima che si comprima la barra
Quindi se la grandezza del layout meno la y (il risultato di questa differenza risulta essere lo spazio disponibile totale in basso) è minore (adesso che ci penso devo levare l'uguale) della grandezza della barra, allora la barra viene settata al minimo della y.codice:if ((rootlayout.getHeight() - (y - statusBarOffset)) <= dropdownbar2.getHeight()) {
params.topMargin = rootlayout.getHeight() - (dropdownbar2.getHeight());
}
L'altro serve a evitare che la barra scompaia superiormente e agisce allo stesso modo
Infine se la barra non rischia di comprimersi o di scoparire sopra significa che è in mezzo quindi il limite superiore può essere tranquillamente essere settato come la y ( io poi ho aggiunto che si mette la metà della barra nel punto dove si tocca non il limite superiore; tutto questo solo per l'estetica)