Android视差效果和查看寻呼机

use*_*336 8 android parallax android-viewpager

我正试图在我的应用程序中实现视差效果.我有一个FragmentActivity实现OnPageChangeListener接口并监听我的ViewPager滚动事件.

为了在我的XML中实现这种效果,我在LinearLayout后台拥有所有其他视图,并在onPageScrolled回调中移动它.如果我只是滑动就可以了,效果会起作用,背景位置也会改变.但是当我的手指离开屏幕时,背景会重新绘制在原始位置(即使我在新页面中).我不明白为什么会这样.这里是我的代码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

}
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

xgc*_*986 9

我知道它有点旧了但请看看https://github.com/xgc1986/ParallaxPagerLibrary

它不会覆盖onDraw方法,不仅影响图像,还适用于各种视图

mPager.setPageTransformer(false, new ParallaxTransformer(R.id.parallaxContent));
Run Code Online (Sandbox Code Playgroud)

R.id.paraallaxContent是您想要具有此效果的视图的ID

除非其他解决方案,不需要任何具体的结构工作,也是独立的布局

演示:youtube