android viewpager画廊,Android使用ViewPager实现画廊效果
按照国际惯例,先上效果图
其实这跟普通的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实现画廊效果相关推荐
- android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果
画廊在很多的App设计中都有,如下图所示: 该例子是我没事的时候写的一个小项目,具体源码地址请访问https://www.easck.com/> 使用方式 布局中添加该自定义控件 xmlns:t ...
- Android开发学习之基于ViewPager实现Gallery画廊效果
通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...
- Android照片墙加强版,使用ViewPager实现画廊效果
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12646775 记得关于照片墙的文章我已经写过好几篇了,有最基本的照片墙,有瀑布流模 ...
- (转)android UI进阶之用ViewPager实现欢迎引导页面
ViewPager需要android-support-v4.jar这个包的支持,来自google提供的一个附加包.大家搜下即可. ViewPager主要用来组织一组数据,并且通过左右滑动的方式来展示. ...
- Android开发之ViewPager结合Fragment实现滑动页面的效果(源代码分享)
前段日子的博客有介绍过关于ViewPager的使用,发现大家对那篇博客都情有独钟,今天我们就在来看一下ViewPager在Fragment中的使用吧,因为ViewPager是在补丁包中添加的低版本的包 ...
- Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10766053 之前用JakeWharton的开源框架ActionBarSherl ...
- Android ViewPager多页面滑动切换以及动画效果---换view
一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了 ...
- Android典型界面设计(8) ——ViewPager+PagerSlidingTabStrip实现双导航
一.问题描述 PagerSlidingTabStrip是android开源项目,指示器控件.官网地址:https://github.com/astuetz/PagerSlidingTabStrip 该 ...
- android viewpager 底部tabhost,FragmentTabHost+ViewPager实现底部导航栏
首先使用FragmentTabHost实现底部菜单栏. content_act_main.xml xmlns:app="http://schemas.android.com/apk/res- ...
最新文章
- 从4个月到7天,Netflix开源Python框架Metaflow有何提升性能的魔法?
- 第四节 莎士比亚模板
- 码云机房今晨出现网络故障,已经恢复
- JavaScript+HTML+CSS 无缝滚动轮播图的两种方式
- 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze
- 十二、程序返回、数据类型表示、代码注释
- O(n)复杂度求没有出现的数字(leetcode448)
- 马化腾“闪退”华人首富;马云回应收购中天微;华为遭美刑事调查 | CSDN极客头条...
- concurrent 底层_JDK1.8 util-concurrent-ConcurrentLinkedQueue源码分析
- Java实现Excel数据导入数据库
- 【Linux基础】Linux简史
- MySQL之数据类型、建表和六大约束
- 摄影技能技巧大全 - 太精彩啦,年后弄个单反按着练练!
- 数据通信与计算机网络课后习题
- 设计模式(10)[JS版]-JavaScript如何实现组合模式???
- # 英语听抄 (英)
- P1873 砍树(二分答案)
- CSS样式书写顺序 与 浏览器内部加载原理
- 在微软Azure的服务器上创建Windows虚拟机的教程
- 计算机毕业论文附录的模板,毕业论文附录的格式和写法
热门文章
- Linux Shell脚本_设置最大打开文件数
- object转float_人工智能-Object Detection API 模型转tflite并验证
- 读取mysql数据到select_MySQL数据库8(十三)高级数据操作之select指令
- 华为matepad 鸿蒙,曝华为4月27日召开高端平板发布会:MatePad Pro2将亮相 首发鸿蒙系统...
- 蓝牙小电池图标_提高MacBook电池寿命的15个技巧
- linux yum 安装widget,CentOS 7安装Qt5.12.1过程
- php怎么设置网站的字符编码,php如何设置字符编码
- python framework threads_Python - 多线程
- java两个长度不同数组_两组数组,长度不一样,如果其中一个数组的值在另一个中不存在,则不符合要求.怎么算?...
- mysql有没有类似merge_有关于Mysql的MERGE表类型