`
大头K
  • 浏览: 183004 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

视差Viewpager(仿手机菜单背景图跟随拖动方向缓慢前进效果附源码!)

阅读更多
视差Viewpager:
即当我们拖动viewpager左右滑动的时候,背景图片也跟左右滑动,不过以相对滑动更慢的速度滑动,故产生视差效果。

先看效果图:




1.先看最外层布局:
说明一下:与Viewpager并列一个HorizontalScrollView,里面放背一张图片作为Viewpager的背景图,当Viewpager滑动时,HorizontalScrollView跟随滑动,下一个代码介绍在哪里控制HorizontalScrollView跟随滑动如何滑动
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <HorizontalScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="none" >

        <ImageView
            android:id="@+id/image"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/bg"
            />
    </HorizontalScrollView>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>



2.如何控制HorizontalScrollView跟随Viewpager滑动和如何滑动:
说明一下:设置Viewpager滑动监听,在onPageScrolled中实现标题效果,具体请参考以下代码。

		// 设置viewpager的滚动监听
		pager.setOnPageChangeListener(new OnPageChangeListener() {
			@Override
			public void onPageSelected(int arg0) {
				// 页面被选择是调用
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// viewpager滑动时被调用

				// pager所有子页面的总宽度
				float widthOfPagers = pager.getWidth() * adapter.getCount();
				// 背景图片的宽的
				float widthOfScroll = image.getWidth();

				// ViewPager可滑动的总长度
				float moveWidthOfPagers = widthOfPagers - pager.getWidth();
				// 背景图的可滑动总长度
				float moveWidthOfScroll = widthOfScroll - pager.getWidth();

				// 可滑动距离比例
				float ratio = moveWidthOfScroll / moveWidthOfPagers;
				// 当前Pager的滑动距离
				float currentPosOfPager = arg0 * pager.getWidth() + arg2;

				// 背景滑动到对应位置
				scroll.scrollTo((int) (currentPosOfPager * ratio),
						scroll.getScrollY());
			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
				// 滚动状态改变时被调用
			}
		});
	}


3.需要了解更多的朋友可以下载源码。
源码地址:https://github.com/kk-java/ParallaxViewpager
  • 大小: 1.6 MB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics