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 高度时,重置平移距离,实现无限滚动视觉效果

 实现步骤示意图

2-1 绘制背景图

 

2-2 实现滚动效果

 

2-3 实现无限滚动视觉效果

 

既然竖屏无限滚动已经实现了,同理只要固定高度拉伸宽度将图片填满屏幕,即可实现无限横向滚动效果

切换无限滚动的方向

 

具体代码查阅 SrcScrollFrameLayout 源码(点击查看)

 SrcScrollFrameLayout 功能特点

  1. 将选择的图片按比例缩放填满当前 View 宽度
  2. 背景图片缩放后高度小于当前 View 高度时自动复制黏贴直到占满当前 View 高度,以此来达到无限滚动效果
  3. 可通过自定义属性 speed 调整滚动速度,提供 slowordinary fast 选项,也可自行填入 int 值,值越大滚动速度越快,建议 1 ≤ speed ≤ 50
  4. 可通过自定义属性 maskLayerColor 设置遮罩层颜色,建议带透明度
  5. 提供 startScroll stopScroll 方法控制开始/停止滚动
  6. 可通过自定义属性 scrollOrientation 设置滚动方向为 上移 左移 ,默认滚动方向为上移

3.最后

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值