我想在我的应用程序中实现视差效果。
我有一个
为了在我的XML中实现此效果,我在所有其他视图的后面使用了一个带有背景的
谢谢。
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
}
}
谢谢。