画廊在很多的App设计中都有,如下图所示:

该例子是我没事的时候写的一个小项目,具体源码地址请访问https://www.easck.com/>

使用方式

布局中添加该自定义控件

xmlns:tools="http://www.easck.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/cover"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

代码中设置

代码中设置分为以下几个步骤:

•查找控件

•初始化数据

•将需要显示的数据设置到控件上

•设置滑动监听

public class MainActivity extends AppCompatActivity {

private CoverFlowViewPager mCover;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mCover = (CoverFlowViewPager) findViewById(R.id.cover);

// 初始化数据

List list = new ArrayList<>();

for(int i = 0;i<10;i++){

ImageView img = new ImageView(this);

img.setBackgroundColor(Color.parseColor("#"+getRandColorCode()));

list.add(img);

}

//设置显示的数据

mCover.setViewList(list);

// 设置滑动的监听,该监听为当前页面滑动到中央时的索引

mCover.setOnPageSelectListener(new OnPageSelectListener() {

@Override

public void select(int position) {

Toast.makeText(getApplicationContext(),position+"",Toast.LENGTH_SHORT).show();

}

});

}

/**

* 获取随机颜色,便于区分

* @return

*/

public static String getRandColorCode(){

String r,g,b;

Random random = new Random();

r = Integer.toHexString(random.nextInt(256)).toUpperCase();

g = Integer.toHexString(random.nextInt(256)).toUpperCase();

b = Integer.toHexString(random.nextInt(256)).toUpperCase();

r = r.length()==1 ? "0" + r : r ;

g = g.length()==1 ? "0" + g : g ;

b = b.length()==1 ? "0" + b : b ;

return r+g+b;

}

}

实现原理

实现过程中有两个难点:

•如何实现滑动过程中的放大与缩小

•如何显示ViewPager中未被显示的页面

如何实现滑动过程中的放大与缩小?

在设置每一个ViewPager 的页面时,对每一个页面都设置一个固定的padding值,这样每个页面都会显示缩小状态。同时ViewPager设置addOnPageChangeListener(),滑动监听,在该滑动监听中会回调ViewPager的滑动的状态,滑动的偏移量等,根据滑动的偏移量进行放大缩小。及根据padding值设置控件的显示大小

android 滚动画画,Android利用ViewPager实现可滑动放大缩小画廊效果相关推荐

  1. android切换页面上滑动动画,Android ViewPager多页面滑动切换以及动画效果

    评论 #28楼[楼主] 2012-06-01 14:27D.Winter @孤寒江雪 我猜 要么在头尾各再加入一个页卡 在页卡切换监听中判断,如果选中了头尾的页卡,就返回到相邻的那个页卡.头尾页卡的界 ...

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

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

  3. android view禁止右滑,ViewPager 禁止左右滑动完美解决

    package cn.fht.widget; import android.content.Context; import android.support.v4.view.ViewPager; imp ...

  4. [Android实例] ViewPager多页面滑动切换以及动画效果(精)

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

  5. android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...

    2016-02-24 回答 // 隐藏缩放控件 int childcount = mmapview.getchildcount(); view zoom = null; for (int i = 0; ...

  6. ViewPager多页面滑动切换以及动画效果

    2019独角兽企业重金招聘Python工程师标准>>> 一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横 ...

  7. IDEA设置滚动滑轮、鼠标滚轮上下滑动放大缩小字体、Ctrl+0恢复原始字体大小

    ctrl+0恢复的默认字体大小可以通过下面的这个位置设置

  8. Android自带组件之Gallery 实现3D画廊效果

    1: 首先我们要了解到这个该控件的常用属性: 如图: 2:通过该组件定义属于我们自己的组件 iphone 中的coverflow中图片切换是有旋转和缩放效果的,而自带的gallery中并没有实现.因此 ...

  9. android圆球触摸怎么实现,Android利用ViewPager实现带小圆球的图片滑动

    Android利用ViewPager实现带小圆球的图片滑动 发布时间:2020-10-02 05:55:29 来源:脚本之家 阅读:69 作者:antimage08 在上文实现的带小圆球的图片滑动的通 ...

最新文章

  1. php imap_open效率低,求救,为什么 imap 连接这么慢
  2. 看了看カルタグラ~魂ノ苦悩~(カルタグラ~ツキ狂イノ病~PS2移植版)的官网...
  3. VTK:Dijkstra 图形测地线路径用法实战
  4. 实现 LRU 缓存机制
  5. 阿诗玛的传说|阿诗玛民间故事
  6. HTTP之长连接与短连接(C++ Qt框架实现)
  7. C++static类静态成员函数及变量解析
  8. Installshield2008教程
  9. LabVIEW开发实战:Labview简介
  10. win10下载ios及安装方法
  11. html重置css样式,css样式重置 移动端适配
  12. 2014校园招聘之一(8月华为机试题)
  13. python画聚类树状图_影像组学学习笔记(36)-聚类树状图Dendrogram的python实现
  14. VMware 终端安装 VMware Tools 以及 开启共享文件夹
  15. newifi无盘服务器,newifi 3 padavan纯净版固件,2.4G挺稳定,2019年5.09更新
  16. SQL千万级大数据量查询优化
  17. 任正非谈鸿蒙系统失误,任正非谈鸿蒙:华为鸿蒙将比安卓快 60%
  18. Windows之使用批处理创建快捷方式到桌面(符号链接)
  19. 2016版excel_有win10系统excel打开慢的问题来看
  20. 【Cxinny】Koa

热门文章

  1. Cygwin中如何像在Ubuntu中一样安装软件
  2. 特征计算 - Jaccard 相似系数与 Python 代码实现
  3. 21届校招薪资曝光:严重倒挂老员工!
  4. 动手做个DialoGPT:生成式多轮对话模型
  5. 计算机史上首篇教你从算法问题提炼算法思想的文章
  6. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制
  7. 工程实践:基于规则模式的军事和医药领域知识图谱问答快速实现
  8. 【ACL2020】Relabel the Noise: Joint Extraction of Entities and Relations via Cooperative Multiagents
  9. 委托、Lambda表达式、事件系列07,使用EventHandler委托
  10. 08.MyBatis整合Log4j