本项目是基于 SensorManager + Scroller 实现高仿自如裸眼 3D 效果
⭐博客地址⭐
-
将普通 2D 图层分割为三层:前景、中景及后景,(本项目示例中使用到的图层元素均来自自如 APP,接口拦截得到的)
-
主要是通过 加速度传感器 和 磁场传感器 感知设置倾斜角度,计算出前景和后景 View 在 X 、 Y 轴上应该移动的距离,中景保持不动,从而增加景深,实现伪 3D 效果
-
创建工具类 GravityRotationHelper 在此类中通过 Lifecycle 更便捷的在上下文对象的生命周期中注册与反注册传感器监听,得到需要的传感器数值
-
自定义 GravityRotationImageView 处理传感器数值,并判断当前 View 为前景还是后景,再通过 Scroller 辅助进行对应方向上的滚动
-
1.复制类 GravityRotationHelper 和 GravityRotationImageView 到项目中,并将其 自定义属性 复制至 attrs 中
-
2.在布局中使用 GravityRotationImageView 装填前景及后景图片(将 GravityRotationImageView 当 ImageView 用即可)
给后景设置 isBack 属性为 true 或在代码中进行设置
-
3.创建 GravityRotationHelper 对象并绑定前后景 View :
GravityRotationHelper(this).attachViews(viewBinding.ivFront, viewBinding.ivBack)
-
页面内只有一组图象需要实现该效果:SinglePageActivity 、 activity_singlepage
-
在 banner 中实现该效果:BannerActivity 、 activity_banner 、 item_banner
-
Email: ziwen.lan@foxmail.com