Android Effet de Parallaxe et Vue Pager
Je suis en train de réaliser un effet de parallaxe dans mon application.
J'ai un FragmentActivity
qui implémente l' OnPageChangeListener
de l'interface et à l'écoute de mon ViewPager
les événements de défilement.
Pour obtenir cet effet dans mon XML, j'ai un LinearLayout
derrière tous les autres points de vue avec mon expérience, et je la déplace dans la onPageScrolled
de rappel.
Si j'ai simplement glisser tout est ok, l'effet fonctionne en arrière-plan et le changement de position. Mais quand mon doigt quitte l'écran, arrière-plan est redessinée à sa position d'origine (même si je suis dans une nouvelle page).
Je ne comprends pas pourquoi cela se produit.
Voici le code de mon FragmentActivity
:
public class MainActivity extends FragmentActivity implements OnPageChangeListener {
//DEFINE THE PAGEADAPTER
private ViewPager viewPager;
private com.angtrim.ecomilano.PagerAdapter pagerAdapter;
private int oldPosition = 0;
private int offSet = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//CREATE VIEWPAGER
viewPager = (ViewPager) findViewById(R.id.viewpager);
pagerAdapter = new PagerAdapter(getApplicationContext(),getSupportFragmentManager());
//SET THE ADAPTER
viewPager.setAdapter(pagerAdapter);
//SET FIRST ITEM
viewPager.setCurrentItem(0);
//SET CHANGE PAGE LISTENER
viewPager.setOnPageChangeListener(this);
}
@Override
public void onPageScrollStateChanged(int arg0) {
//TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
//RIGHT SWIPE
if((oldPosition < arg2))
{
offSet = (int)((arg2 - oldPosition)*0.5);
oldPosition = arg2;
}
//LEFT SWIPE
else if( (oldPosition > arg2))
{
offSet = (int) (-(oldPosition - arg2)*0.5);
oldPosition = arg2;
}
findViewById(R.id.backi).offsetLeftAndRight(offSet);
}
@Override
public void onPageSelected(int arg0) {
//TODO Auto-generated method stub
}
}
Merci.
OriginalL'auteur user1305336 | 2013-06-09
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est un peu vieux mais jetez un oeil à cette https://github.com/xgc1986/ParallaxPagerLibrary
Il n'annule pas la méthode onDraw, et l'effet n'est pas seulement pour les images, il fonctionne avec tous les types de vue
R. id.paraallaxContent est l'id de la Vue que vous souhaitez avoir cet effet
moins que les autres solutions n'ont pas besoin de toute structure en béton pour le travail, et est également à la disposition indépendant
démo: youtube
OriginalL'auteur xgc1986
Je sais que la question est vieille, et je ne peux pas vraiment répondre à votre question. Mais, un gars du nom de Matthieu créé un excellent exemple de ViewPager effet de parallaxe qui peut être trouvé sur le lien suivant.
https://github.com/MatthieuLJ/ViewPagerParallax
OriginalL'auteur Jakob
Peut-être cette bibliothèque peut vous aider à:
https://github.com/garrapeta/ParallaxViewPager
OriginalL'auteur GaRRaPeTa
Cette bibliothèque est entièrement personnalisable dans les directions x et y et inclut des effets alpha:
https://github.com/prolificinteractive/ParallaxPager
D'Installation (en v0.7, consultez le fichier LISEZMOI pour les mises à jour):
Ajouter en tant que Maven Central de dépendance avec Gradle
Personnalisée
ParallaxContainer
dans la mise en page XML au lieu deViewPager
Créer une mise en page fichier XML pour chaque page (x/y/alpha attributs peuvent être définis séparément pour chaque objet se déplaçant dans/hors de la page)
Il y a quelques lignes à copier/coller pour ajouter à
onCreate
de votre Activité (de la tête au fichier README pour les lignes exactes)OriginalL'auteur matt---
Prendre un coup d'oeil à ce petite bibliothèque j'ai créé - c'est un ViewPager sous-classe, qui ne nécessite aucune configuration supplémentaire de l'effet de parallaxe de travail.
OriginalL'auteur Andras K