viewpager实现画廊(一屏多个Fragment)效果

简介:

效果图如下:

android viewpager
android viewpager half

在使用Gallery的时候大家会发现有几个问题(1). 无法控制每次滑动只滑动一页, (2). Gallery默认第一个item居中,无法修改它与Gallery的左间距。ViewPager可以方便的解决上面两个问题,但默认却无法在屏幕上显示多个Fragment。
下面介绍如何利用ViewPager及android:clipChildren属性解决这个问题。
1、定义xml

Java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/pager_layout"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:clipChildren="false"

android:layerType="software" >

<android.support.v4.view.ViewPager

android:id="@+id/view_pager"

android:layout_width="250dp"

android:layout_height="450dp"

android:layout_gravity="center"

android:clipChildren="false" />

</RelativeLayout>

发现上面的RelativeLayout(可以用其它layout替换)和ViewPager的android:clipChildren都设置为了false。

android:clipChildren表示是否限制子View在其范围内,在animations动画以及本文的情况下可以发挥很大的作用。默认为true。

2、Java部分
这里我们主要完成
(1). ViewPager设置
需要setOnPageChangeListener,在onPageScrolled(int position, float positionOffset, int positionOffsetPixels)函数中不断刷新layout。
还可以

Java

1

2

viewPager.setOffscreenPageLimit(TOTAL_COUNT);

viewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin));

setOffscreenPageLimit表示设置缓存,这样左右拖动即可看见后面的Fragment。setPageMargin表示设置Fragment之间的间距

(2). FrameLayout设置
需要setOnTouchListener函数中将滑动滑动事件传递给viewPager,否则只有viewPager中间的view可以滑动,设置后整个viewPager都可以滑动。
具体代码如下:

Java部分实现

可能运行后出现viewpager的部分Fragment无法看见或是突然消失的问题,请确保RelativeLayout和ViewPager的android:clipChildren都设置为了false并且viewPager.setOffscreenPageLimit(TOTAL_COUNT);其中TOTAL_COUNT大于0. 当然子Fragment本身不能是match_parent的。viewpager设置了paddingTop也会导致无法实现画廊而只是显示一屏。

目录
相关文章
|
7月前
|
Android开发
Android使用ViewPager实现图片轮播系列之三:手动滑动 + 左右箭头(1)
Android使用ViewPager实现图片轮播系列之三:手动滑动 + 左右箭头(1)
|
数据安全/隐私保护
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
138 0
|
Android开发
Android笔记:ViewPager和TabLayout连用时,去除ViewPager预加载
Android笔记:ViewPager和TabLayout连用时,去除ViewPager预加载
198 0
|
XML Android开发 数据格式
Android--FragmentTabHost+ViewPager+Fragment实现底部tab菜单栏
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79001632 activity_main.
1231 0
简单几行代码让ViewPager实现垂直滑动效果
近几日有网友在群里提问:有没有大神做过ViewPager实现垂直滑动效果。其实这个问题实现很简单,下面就简单的讲一下实现步骤: 先来看一张效果图:(你会发现,切换ViewPager慢一些,会看到颜色过渡效果,so beautiful) 垂直ViewPager演示 一、首先写一个类继承ViewPager,在构造方法里面设置viewpage的切换动画,然后重写onInterceptTouchEvent,对事件是否处理进行判断。
1656 0
|
Java Android开发 容器
TableLayout和Viewpager实现切换
因为我是在之前的基础上写的,所以这个TableLayout和Viewpager实际上是写在Fragment上的。要写到Activity里其实也是一样的啦。 先看效果图,原谅我不会动态图,只能截个图啦 布局文件 app:tabIndicatorcolor意思是选中的导航条的颜色。 app:tabSelectesTextColor是选中的导航条的文字
2204 0
|
Android开发 容器
Android开发之ViewPager切换动画
Android从3.0开始,ViewPager也开始有了切换动画,ViewPager有个setPageTransformer()方法,用于设置ViewPager切换时的动画效果。
933 0
|
XML Android开发 数据格式
Android开发之ViewPager+Fragment+FragmentTabHost实现底部菜单
在Android开发中,底部菜单是经常要使用的,如微信、微博、支付宝等,实现底部菜单有好几种方式,大致分为: 通过TabWidget实现 隐藏TabWidget,通过RadioGroup和RadioButton实现底部菜单栏 通过FragmentTabHost实现 通过5.
1042 0