gpt4 book ai didi

Android视差效果和View Pager

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:20 26 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现视差效果。我有一个 FragmentActivity 实现了 OnPageChangeListener 接口(interface)并监听了我的 ViewPager 滚动事件。

为了在我的 XML 中实现这种效果,我在所有其他带有我的背景的 View 后面设置了一个 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

}
}

谢谢。

最佳答案

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

它不会覆盖 onDraw 方法,而且效果不仅适用于图像,它适用于各种 View

mPager.setPageTransformer(false, new ParallaxTransformer(R.id.parallaxContent));

R.id.paraallaxContent 是你想要有这个效果的View的id

除非其他解决方案,不需要任何具体结构即可工作,并且与布局无关

演示:youtube

关于Android视差效果和View Pager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com