Android 实现小红书登陆页面背景图无限滚动效果
1.需求分析
需求特点
- 背景无限循环滚动
功能分析
- 通过 uiautomatorviewer 分析页面布局,确定其应是通过自定义 FrameLayout 实现
- 通过清除 App 数据同时断开数据连接再启动该页面,确定背景加载的是本地图片
- 通过小红书 apk 获取资源文件,确定背景图片为单张图片
2.具体实现
实现步骤
- 自定义 SrcScrollFrameLayout 继承于 FrameLayout ,初始化时 setWillNotDraw(false) 使 onDraw 方法生效
- 获取背景图片 Bitmap 对象,按 SrcScrollFrameLayout 实际宽度按比例缩放,同时计算需要绘制的背景图 Bitmap 数(绘制多个背景图 Bitmap 的目的:一是为了填满当前 View 高度,二是为了填充滚动时产生的留白)
- onDraw() 中通过 canvas.drawBitmap(mSrcBitmap, mMatrix, mPaint) 绘制背景图
- 通过定时任务操作背景图 Bitmap 平移距离后发起重绘,实现滚动效果
- 当平移距离 ≥ 背景图 Bitmap 高度时,重置平移距离,实现无限滚动视觉效果
实现步骤示意图
既然竖屏无限滚动已经实现了,同理只要固定高度拉伸宽度将图片填满屏幕,即可实现无限横向滚动效果
具体代码查阅 SrcScrollFrameLayout 源码(点击查看)
SrcScrollFrameLayout 功能特点
- 将选择的图片按比例缩放填满当前 View 宽度
- 背景图片缩放后高度小于当前 View 高度时自动复制黏贴直到占满当前 View 高度,以此来达到无限滚动效果
- 可通过自定义属性 speed 调整滚动速度,提供 slow、ordinary 和 fast 选项,也可自行填入 int 值,值越大滚动速度越快,建议 1 ≤ speed ≤ 50
- 可通过自定义属性 maskLayerColor 设置遮罩层颜色,建议带透明度
- 提供 startScroll 和 stopScroll 方法控制开始/停止滚动
- 可通过自定义属性 scrollOrientation 设置滚动方向为 上移 或 左移 ,默认滚动方向为上移
3.最后
- 源码及 Demo 地址:https://github.com/ziwenL/SrcScrollFrameLayout
- 如有更好的见解或建议,欢迎留言
Android 实现小红书登陆页面背景图无限滚动效果相关推荐
- html怎么制作固定背景,使用CSS制作的页面背景固定和滚动效果
HTML HTML结构很简单,一个class为.cd-fixed-bg的div元素用于放置固定背景图,一个class为.cd-scrolling-bg的div元素用于滚动的部分.我们可以放置多个.cd ...
- Android仿小红书大众点评登录页背景动态效果
SrcScrollFrameLayout我转载Ziwen Lan的只用于个人记录 Introduction :仿小红书登陆页面背景图无限滚动 FrameLayout 功能特点: 1.将选择的图片按比例 ...
- itextsharp php,C#_C#使用iTextSharp设置PDF所有页面背景图功能实例,本文实例讲述了C#使用iTextSharp - phpStudy...
C#使用iTextSharp设置PDF所有页面背景图功能实例 本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然 ...
- Php点击更换封面,JavaScript_js实现点击图片改变页面背景图的方法,本文实例讲述了js实现点击图 - phpStudy...
js实现点击图片改变页面背景图的方法 本文实例讲述了js实现点击图片改变页面背景图的方法.分享给大家供大家参考.具体实现方法如下: 点击图片即改变页面的背景图片 希望本文所述对大家的javascrip ...
- android actionbar 背景,Android应用开发之定制页面背景及Actionbar overflow menu的背景色...
本文将带你了解Android应用开发之定制页面背景及Actionbar overflow menu的背景色,希望本文对大家学Android有所帮助 定义theme和style, 注意是actionOv ...
- css设置背景图片随滚动缓慢滚动_h5页面背景图很长要有滚动条滑动效果的实现...
最近做项目过程中,老大提了个很奇葩的要求 背景图铺满页面,他要求有滚动条可以滑动,他给我讲的思路是用js 获取背景图片的高,在获取当前窗口的高,两者比较,当窗口的高小于背景图片的高,把窗口的高设置成背 ...
- 如何更换 macOS Mojave 登陆界面背景图?
相信用着 macOS Mojave 系统的小伙伴们都对下面这张沙漠的壁纸很熟悉了. 这张壁纸作为 macOS Mojave 系统的原始壁纸,既是桌面壁纸,也是开机登陆界面的背景图,看得久了,确实有点腻 ...
- Mac 修改开机登陆界面背景图, 替换沙漠背景图
Mac 修改开机登陆界面背景图, 替换沙漠背景图 本机版本 : macos mojave 10.14.6 之前网上查了一下都说需要替换原本的沙漠图片,我试了一下,根本不需要,下面进入正题. 1.系统偏 ...
- android 仿小红书标签,Android 仿小红书图片标签
TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...
- php仿小红书,Android仿小红书图片标签
TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 Gradle Step 1.Add it in your ...
最新文章
- linux驱动内核,Linux内核设备驱动之Linux内核基础笔记整理
- Move or commit them before Pull git
- c#中用鼠标点击事件实现抠图
- python类和实例化
- ddos攻击工具_linux下DDoS攻击模拟实战
- 调色插件怎么安装_修图调色一键搞定!PS大师级调色插件NikCollection 八合一送你...
- Mybatis的生命周期及作用域
- 官宣 .NET 6 RC (Release Candidate) 2
- pure specifier can only be specified for functions
- 在TriCore架构芯片上移植 RT-Thread
- 在硬盘留下后门,重装系统都没辙(太太太太太厉害了)
- 《软件学报》《计算机学报》《计算机研究与发展》为计算机类三大权威刊物
- 小白也能动手搭建属于自己的博客网站
- 2012,独立B2C已死!天猫战后观格局
- 【C语言进阶】很诡异的编译报错expected declaration or statement at end of input
- BIMBase参数化建库软件使用手册
- UCL HPC超算平台使用笔记
- 计算摄影——风格迁移
- mysql8.0以上版本安装出现问题
- 计算机stem项目计划书,一篇文章让你读懂STEM!