2013-02-04 18 views
31

Desidero disattivare tutte le animazioni per le transizioni nella mia personalizzata ViewPager. Questo cercapersone vista contiene quattro schede -e ogni scheda carica un Fragment - e che il pager vista fa è cambiare le schede: per esempio prima scheda è l'indice, secondo è carta, eccDisattivazione dell'animazione in ViewPager

Il problema è che se , essendo la prima scheda scelta, faccio clic sulla quarta scheda, posso vedere come lo ViewPager passa attraverso la seconda e la terza scheda e si ferma sulla quarta e non voglio che ciò accada.

ho cercato di disattivare tutte le animazioni di questo ViewPager cercando di utilizzare un setAnimation per null ogni volta che l'utente sceglie una nuova scheda da visualizzare, ma ancora non funziona.

Qualche idea per realizzare questo, per favore? Grazie mille in anticipo!

EDIT: ho anche cercato di ignorare onCreateAnimation per ogni Fragment, ma ancora non funziona

+0

Vuoi dire che vuoi rimuovere anche la funzionalità di scorrimento, ho capito. Se è così, prova a creare un nuovo progetto per 4.0 + in Eclipse, ti consente di creare un progetto vuoto con entrambe le schede scorrevoli e non scorrevoli, controlla le differenze, è il modo più veloce e puoi vedere un sacco di codice. – MariusBudin

+0

beh, in realtà non è possibile scorrere orizzontalmente ora, poiché a cliente non è piaciuto, quindi voglio solo rimuovere le animazioni (lo scorrimento è già disattivato) – noloman

risposta

102

ho finalmente scoperto: il problema può essere risolto semplicemente chiamando il mViewPager.setCurrentItem(position) con un parametro in più per false, che è il rotolo liscio per il ViewPager. Dopo questo, lo scroll sarà fatto senza alcun smoothing e quindi le animazioni non saranno viste.

+0

Dove inserire questo codice? Sembra non funzionare – JayVDiyk

+3

@JayVDiyk Esempio. sul pulsante Fare clic in questo modo: 'mViewPager.setCurrentItem (position, false);' – vovahost

+0

Anche questo potrebbe interessare a questo: http://stackoverflow.com/a/13437997/3075340 – Micro

30

Ecco un'altra soluzione:

  • sottoclasse il ViewPager (la vostra abitudine ViewPager)
  • Override i due setCurrentItem metodi

Snippet di codice:

@Override 
public void setCurrentItem(int item, boolean smoothScroll) { 
    super.setCurrentItem(item, false); 
} 

@Override 
public void setCurrentItem(int item) { 
    super.setCurrentItem(item, false); 
} 

Impostando smoothScroll a false, si sta disabilitando l'animazione di scorrimento.

Problemi correlati