Autore Topic: Impedire scroll a sinistra ViewPager  (Letto 853 volte)

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Impedire scroll a sinistra ViewPager
« il: 19 Febbraio 2013, 10:43:31 CET »
0
Ciao a tutti.
Cerco di spiegare il mio problema (scusate le eventuali imprecisioni, da poco cerco di programmare in android)
Ho una galleria di immagini che gestisco con ViewPager
Vorrei impedire di fare lo scroll a sinistra (o meglio se l'utente fa uno scroll a sinistra devo mostrare delle informazioni al posto dell'immagine). Lo scroll a destra invece deve funzionare normalmente (anche se vorrei che una volta terminate le immagini, debba ritornare alla prima).
Non so se sono stato chiaro (non credo) :-)
Mi aiutate per favore.


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Impedire scroll a sinistra ViewPager
« Risposta #1 il: 19 Febbraio 2013, 12:17:06 CET »
0
Se ho ben capito, quello che ti serve è un menu laterale (side menu). Cercare di implementarlo alterando il funzionamento standard di un ViewPager complica notevolmente le cose.

Ti consiglio di dare un'occhiata ad implementazioni alternative. Ti allego un paio di link che dovrebbero portarti a qualche pagina utile (dico dovrebbero perchè da dove sono adesso non mi si aprono e non riesco a controllare).

Cyril Mottier » The making of Prixing #1: Fly-in app menu
https://github.com/gitgrimbo/android-sliding-menu-demo
Tech Stuff: A sliding menu for Android, very much like the Google+ and Facebook apps have it | CoboltForge Berlin
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:Impedire scroll a sinistra ViewPager
« Risposta #2 il: 19 Febbraio 2013, 17:44:21 CET »
0
Innanzitutto grazie per la risposta immediata  :-o
Sto dando un occhiata a quello che mi hai suggerito (sperando di essermi spiegato bene perchè la cosa è un po contorta)




Post unito: 19 Febbraio 2013, 18:27:40 CET
:-( Purtroppo non era proprio quello che cercavo.
Allora pongo la domanda diversamente (scusa ma devo essere per forza prolisso  :-)
Innanzitutto non so se lo gestirò con un ViewPager, per adesso sto provando con un HorizontalScrollView all'interno di una ScrollView.
Immagina di dover visualizzare la galleria di foto e la descrizione di n ristoranti.
Mi è stato chiesto di far visualizzare la prima foto del primo ristorante a tutto schermo, poi  con uno scroll orizzontale (solo verso destra) di visualizzare man mano le altre foto di quel ristorante, ma nel caso in cui si cerca di fare uno scroll verso sinistra, deve visualizzare la descrizione del locale.
Per visualizzare gli altri ristoranti devo usare uno scroll verticale. (Speriamo di non aver incasinato ancora di + il tutto).

Ora io dovrei intercettare (ed impedire) lo scroll a sinistra e se ho ben capito va fatto nell'OnTouchEvent:
Codice: [Seleziona]
    public boolean onTouchEvent(MotionEvent event) {
        float curX, curY;

        switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:
                    Log.d("Scroll", "Down");
                mx = event.getX();
                my = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                    Log.d("Scroll", "Move");
                curX = event.getX();
                curY = event.getY();
                vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                mx = curX;
                my = curY;
                break;
            case MotionEvent.ACTION_UP:
                    Log.d("Scroll", "Up");
                curX = event.getX();
                curY = event.getY();
                vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                break;
        }
Quindi nel caso in cui l'utente cerca di fare uno scroll a sinistra, io devo mostrargli al posto della  foto precedente, una View con la descrizione del ristorante.
Come faccio ad intercettare questo maledetto scroll???
Già se sei arrivato a leggere tutto sei un santo, se poi mi risolvi anche il problema  :-)
« Ultima modifica: 19 Febbraio 2013, 18:27:40 CET da MisterHide, Reason: Merged DoublePost »