按照国际惯例,先上效果图

其实这跟普通的ViewPager原理都一样,需要改变的地方就是:

1.增加滑进和滑出的动画效果

2.缩小ViewPager的大小,给屏幕上留出上一张和下一张视图的空间

布局文件:

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

android:clipChildren="false"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/shareImg"

android:layout_width="match_parent"

android:layout_marginHorizontal="60dp"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:clipChildren="false"

android:layout_above="@+id/shareOptions"

/>

这里只贴出了需要用到的部分

注意viewpager自身和父布局都需要加上 android:clipChildren="false" 属性

网上大神解释为:在子View进行绘制时不裁切它们的显示范围

接下来是动画部分:

这里需要写个继承自ViewPager.PageTransformer的类,并重写transformPage方法

public class ScaleAlphaPageTransformerimplements ViewPager.PageTransformer{

public static final float MAX_SCALE =1.0f;

public static final float MIN_SCALE =0.8f;

public static final float MAX_ALPHA =1.0f;

public static final float MIN_ALPHA =0.7f;

private boolean alpha =true;

private boolean scale =true;

@Override

public void transformPage(View page,float position) {

if (position < -1) {

position = -1;

}else if (position >1) {

position =1;

}

float tempScale = position <0 ?1 + position :1 - position;

if(scale){

float slope = (MAX_SCALE -MIN_SCALE) /1;

//一个公式

float scaleValue =MIN_SCALE + tempScale * slope;

page.setScaleX(scaleValue);

page.setScaleY(scaleValue);

}

if(alpha){

//模糊

float alope = (MAX_ALPHA -MIN_ALPHA) /1;

float alphaValue =MIN_ALPHA + tempScale * alope;

page.setAlpha(alphaValue);

}

}

/***

* 设置是否模糊和改变大小

* @param alpha

* @param scale

*/

public void setType(boolean alpha,boolean scale){

this.alpha = alpha;

this.scale = scale;

}

}

最后就是调用了

ScaleAlphaPageTransformer scaleAlphaPageTransformer =new ScaleAlphaPageTransformer();

scaleAlphaPageTransformer.setType(true,true);

viewPager.setPageTransformer(true,scaleAlphaPageTransformer);

viewPager.setPageMargin(2);

viewPager.setOffscreenPageLimit(3);

ShareImgAdapter shareImgAdapter =new ShareImgAdapter(listOfImg);

viewPager.setAdapter(shareImgAdapter);

完成

android viewpager画廊,Android使用ViewPager实现画廊效果相关推荐

  1. android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果

    画廊在很多的App设计中都有,如下图所示: 该例子是我没事的时候写的一个小项目,具体源码地址请访问https://www.easck.com/> 使用方式 布局中添加该自定义控件 xmlns:t ...

  2. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

  3. Android照片墙加强版,使用ViewPager实现画廊效果

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12646775 记得关于照片墙的文章我已经写过好几篇了,有最基本的照片墙,有瀑布流模 ...

  4. (转)android UI进阶之用ViewPager实现欢迎引导页面

    ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包.大家搜下即可. ViewPager主要用来组织一组数据,并且通过左右滑动的方式来展示. ...

  5. Android开发之ViewPager结合Fragment实现滑动页面的效果(源代码分享)

    前段日子的博客有介绍过关于ViewPager的使用,发现大家对那篇博客都情有独钟,今天我们就在来看一下ViewPager在Fragment中的使用吧,因为ViewPager是在补丁包中添加的低版本的包 ...

  6. Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签

     转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10766053 之前用JakeWharton的开源框架ActionBarSherl ...

  7. Android ViewPager多页面滑动切换以及动画效果---换view

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了 ...

  8. Android典型界面设计(8) ——ViewPager+PagerSlidingTabStrip实现双导航

    一.问题描述 PagerSlidingTabStrip是android开源项目,指示器控件.官网地址:https://github.com/astuetz/PagerSlidingTabStrip 该 ...

  9. android viewpager 底部tabhost,FragmentTabHost+ViewPager实现底部导航栏

    首先使用FragmentTabHost实现底部菜单栏. content_act_main.xml xmlns:app="http://schemas.android.com/apk/res- ...

最新文章

  1. 从4个月到7天,Netflix开源Python框架Metaflow有何提升性能的魔法?
  2. 第四节 莎士比亚模板
  3. 码云机房今晨出现网络故障,已经恢复
  4. JavaScript+HTML+CSS 无缝滚动轮播图的两种方式
  5. 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze
  6. 十二、程序返回、数据类型表示、代码注释
  7. O(n)复杂度求没有出现的数字(leetcode448)
  8. 马化腾“闪退”华人首富;马云回应收购中天微;华为遭美刑事调查 | CSDN极客头条...
  9. concurrent 底层_JDK1.8 util-concurrent-ConcurrentLinkedQueue源码分析
  10. Java实现Excel数据导入数据库
  11. 【Linux基础】Linux简史
  12. MySQL之数据类型、建表和六大约束
  13. 摄影技能技巧大全 - 太精彩啦,年后弄个单反按着练练!
  14. 数据通信与计算机网络课后习题
  15. 设计模式(10)[JS版]-JavaScript如何实现组合模式???
  16. # 英语听抄 (英)
  17. P1873 砍树(二分答案)
  18. CSS样式书写顺序 与 浏览器内部加载原理
  19. 在微软Azure的服务器上创建Windows虚拟机的教程
  20. 计算机毕业论文附录的模板,毕业论文附录的格式和写法

热门文章

  1. Linux Shell脚本_设置最大打开文件数
  2. object转float_人工智能-Object Detection API 模型转tflite并验证
  3. 读取mysql数据到select_MySQL数据库8(十三)高级数据操作之select指令
  4. 华为matepad 鸿蒙,曝华为4月27日召开高端平板发布会:MatePad Pro2将亮相 首发鸿蒙系统...
  5. 蓝牙小电池图标_提高MacBook电池寿命的15个技巧
  6. linux yum 安装widget,CentOS 7安装Qt5.12.1过程
  7. php怎么设置网站的字符编码,php如何设置字符编码
  8. python framework threads_Python - 多线程
  9. java两个长度不同数组_两组数组,长度不一样,如果其中一个数组的值在另一个中不存在,则不符合要求.怎么算?...
  10. mysql有没有类似merge_有关于Mysql的MERGE表类型