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

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

225254HH-0.gif

该例子是我没事的时候写的一个小项目,具体源码地址请访问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值设置控件的显示大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能产业发展深度报告:格局、潜力与展望

来源&#xff1a;华泰证券人工智能市场格局人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是利用机器学习和数据分析方法赋予机器模拟、延 申和拓展类人的智能的能力&#xff0c;本质上是对人类思维过程的模拟。AI 概念最早始于 1956 年 的达特茅斯会…

DVA框架统一处理所有页面的loading状态

dva 有一个管理 effects 执行的 hook&#xff0c;并基于此封装了 dva-loading 插件。通过这个插件&#xff0c;我们可以不必一遍遍地写 showLoading 和 hideLoading&#xff0c;当发起请求时&#xff0c;插件会自动设置数据里的 loading 状态为 true 或 false 。然后我们在渲染…

2022第十二届PostgreSQL中国技术大会-核心PPT资料下载

一、峰会简介 本次大会以“突破•进化•共赢 —— 安全可靠&#xff0c;共建与机遇”为主题&#xff0c;助力中国数据库基础软件可掌控、可研究、可发展、可生产&#xff0c;并推动数据库生态的繁荣与发展。大会为数据库从业者、数据库相关企业、数据库行业及整个IT产业带来崭…

android webview fragment,android studio中Fragment使用webview返回上一頁的問題

在Fragment中使用了騰訊的X5 webview,雖然好用,但是在Fragment中傳遞消息困難,想要返回上一頁,還得各種消息傳遞什么的,麻煩.可是在Fragment中又不能使用onKeyDown,那怎么辦了?哎,我是太菜了,也不想動腦子,那就在Fragment的最上面加了一個標題欄,里面放了一個textView標簽,監聽…

Ionic3 环境搭建以及基础配置实现(更新中)

GitHub:https://github.com/Teloi 环境配置输入以下命令安装 Ionic &#xff08;如果刚才设置了淘宝镜像源&#xff0c;可以使用 cnpm 代替 npm&#xff09;&#xff1a;npm install -g ionic需要注意的是&#xff0c;如果之前安装过 Ionic 2 的 beta 版本&#xff0c;需要先卸…

饶毅:脑、物理、化学、 生物、心理认知的交叉研究

本文转自公众号&#xff1a;脑科学学术笔记饶毅&#xff1a;脑、物理、化学、生物、心理认知的交叉研究陈鹏&#xff1a;作为一名科学家&#xff0c;饶老师用分子生物学和遗传学研究神经系统的发育和功能&#xff0c;从果蝇到人脑&#xff0c;从细胞到高级功能&#xff0c;他用…

android调用webservice传参数,android调用webservice接口获取信息

我的有一篇博客上讲了如何基于CXF搭建webservice&#xff0c;service层的接口会被部署到tomcat上&#xff0c;这一篇我就讲一下如何在安卓中调用这些接口传递参数。1.在lib中放入ksoap2的jar包并导入2.在xml 配置文件中加入&#xff1a;3.接下来就要通过代码调用借口了String W…

YYT 0659 - 2008全自动凝血分析仪

YYT 0659 - 2008全自动凝血分析仪转载于:https://www.cnblogs.com/sunlyk/p/7427625.html

构建城市大脑的未来标准,9个值得探索的规范

简述&#xff1a;50年来互联网从网状向类脑架构进化并与城市建设结合是城市大脑产生的根源。城市大脑建设是工程问题&#xff0c;但首先也是基础科学问题&#xff0c;掌握科技发展规律是发现和构建城市大脑建设标准的基础。通过总结互联网大脑模型的特征&#xff0c;提出了城市…

android 下载器布局,Android Studio下载约束布局失败

To install:– com.android.support.constraint:constraint-layout-solver:1.0.0-alpha3 (extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha3)– com.android.support.constraint:constraint-layout:1.0.0-alpha3 (extras;m2reposito…

第一节《Git初始化》

创建版本库以及第一次提交 首先我看查看一下git的版本&#xff0c;本地的git是用的yum安装方式&#xff0c;如果想使用源码安装请参考官方文档。 [rootgit ~]# git --versiongit version 1.7.1 再开始Git之前&#xff0c;我们需要设置一下Git的配置变量&#xff0c;这些设置会在…

马斯克39也火星计划PPT

转自 | 软件定义世界&#xff08;SDX&#xff09;北京时间 5 月 31 日凌晨 3&#xff1a;23 &#xff0c;SpaceX 最新的载人龙飞船在美国肯尼迪航天中心 39A 发射台成功发射&#xff0c;在全球观众的注视下&#xff0c;载着两名宇航员还有一只恐龙玩偶前往国际空间站。 马斯克曾…

如何进入docker容器

在使用docker创建了容器之后&#xff0c;大家比较关心的就是如何进入该容器了&#xff0c;其实进入Docker容器有好几多种方式&#xff0c;这里我们就讲一下常用的几种进入Docker容器的方法。 1.使用docker attach进入Docker容器 Docker提供了attach命令来进入Docker容器。接下来…

android surface windows,【技术攻略】s3 硬盘android+windows10双系统

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼grub.cfg内容set timeout5set default"0"menuentry Windows {search --file --no-floppy --setroot /EFI/Microsoft/Boot/bootmgfw.efichainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi}menuentry "Android-…

麻省理工学院让软体机器人拥有了更好的触觉和空间感知能力

MIT来源&#xff1a; IEEE电气电子工程师当机器人可以抓取薯片且不会压碎它的时候&#xff0c;这就意味着它们越来越先进了。为了做到这一点&#xff0c;需要赋予它们触觉和本体感知 -- 一种对它们在空间位置中的感知。这种感觉在大多数软体机器人中是不存在的&#xff0c;但是…

android图片文件的路径地址与uri的相互转换,android图片文件的路径地址与Uri的相互转换...

uri ---> 绝对路径/*** Try to return the absolute file path from the given Uri** param context* param uri* return the file path or null*/public static String getRealFilePath( final Context context, final Uri uri ) {if ( null uri ) return null;final Stri…

centos 环境变量配置

CentOS系统下如何将PHP和mysql命令加入到环境变量中&#xff0c;在Linux CentOS系统上 安装完php和MySQL后&#xff0c;为了使用方便&#xff0c;需要将php和mysql命令加到系统命令中&#xff0c;如果在没有添加到环境变量之前&#xff0c;执行“php -v”命令查看当前php版本信…

5G时代,解锁机器视觉与千行百业的“完美关系”

来源&#xff1a; 脑极体在人工智能带来的诸多产业升级价值中&#xff0c;机器视觉毫无疑问将贡献最大的篇幅。无论是在工业、农业、服务业、金融业&#xff0c;基于视觉交互的智能解决方案都在智能化体系中占据了80%以上的比例。而且视觉往往还是知识图谱、语义分割、机器学习…

Tkinter图片按钮

1 imgBtn tk.PhotoImage(filetest.png) 2 tk.Button(imageimgBtn).pack() 3 tk.mainloop() 转载&#xff0c;来源简书评论&#xff0c;地址&#xff1a;http://www.jianshu.com/p/5c7a1af4aa53 侵删转载于:https://www.cnblogs.com/yechenkai/p/7429553.html

华为p10plus能用鸿蒙吗,华为P10/P10 Plus对比评测:自家兄弟大对决

华为P10/P10 Plus上手评测&#xff1a;离完美更近一步刚刚华为在巴塞罗那正式推出P10系列新机。早在发布会前&#xff0c;身边不少朋友都问“是等等S8还是选P10”。私以为这问题总有些眼熟。若干年前也是MWC&#xff0c;估计不少人会想&#xff1a;到底是买三星还是HTC。华为P1…