如何在滚动viewpager时创建视差效果

时间:2014-09-07 16:03:41

标签: android android-fragments android-viewpager parallax

我在我的应用程序中包含了一个viewpager,其中包含3个不同布局的3个fragements。在网上浏览我发现这些非常好的例子,我想将它们添加到我的片段中,以便为用户提供更多的经验。

Github resource 1

Github resource 2

不幸的是,他们都是用grandle编译的,但我正在使用eclpise。所以,我的第一个问题是:是否可以“转换”这些项目并将它们导入eclipse?第二个:如果没有,你能给我一个工作实例或第一点开始吗?

这是我的活动:

public class WelcomeScreen extends FragmentActivity{
    List<Fragment> fragments = new Vector<Fragment>();
       List<String> fragmentTitles = new Vector<String>();

       private PagerAdapter mPagerAdapter;

       private ViewPager mPager;

       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcomescreen);

        fragments.add(Fragment.instantiate(this, welcome1.class.getName()));
        fragmentTitles.add("Step 1");
        fragments.add(Fragment.instantiate(this, welcome2.class.getName()));
        fragmentTitles.add("Step 2");
        fragments.add(Fragment.instantiate(this, welcome3.class.getName()));
        fragmentTitles.add("Step 3");

        this.mPagerAdapter = new PagerAdapter1(super.getSupportFragmentManager(),fragments,fragmentTitles);
        mPager = (ViewPager) super.findViewById(R.id.pager);
          View pagerStrip = findViewById(R.id.pagerTabStrip);
          mPager.setAdapter(this.mPagerAdapter);

       }
}

这个片段之一:

public class welcome1 extends Fragment {
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        if (container == null) {
             return null;
          }
          // inflate view from layout
          View view = (LinearLayout)inflater.inflate(R.layout.welcome1,container,false);
          return view;

    }

感谢大家! :)

2 个答案:

答案 0 :(得分:0)

嘿〜我是你上面提到的第二个回购的作者。 ;-D

虽然我已经放弃了多年的日食。我绝对可以向你保证eclipse支持gradle项目以及类似intellij的IDE,比如android studio。

但是啊......鉴于Android studio是官方推荐的开发工具,为什么不使用它呢?或者至少使用intellij社区版比笨拙的日食要好得多。

答案 1 :(得分:0)

enter image description here

 @Override
 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,int totalItemCount)                                                                                             
          {
            if (listView.getFirstVisiblePosition() == 0) {
            View firstChild = listView.getChildAt(0);
            int topY = 0;
            if (firstChild != null) {
                topY = firstChild.getTop();
            }

            int heroTopY = stickyViewSpacer.getTop();
            stickyView.setY(Math.max(0, heroTopY + topY));
            imageView.setY(topY * 0.5f);
        }
    }
});

如需更多参考,请点击此处http://androiddhina.blogspot.in/2015/08/listview-header-parallax-with-sticky-view-in-android.html