Skip to content

ziwenL/GravityRotationTo3D

Repository files navigation

GravityRotationTo3D

本项目是基于 SensorManager + Scroller 实现高仿自如裸眼 3D 效果

博客地址

效果比对

自如效果 仿现效果

(:star:左为自如效果,:star:右为该项目高仿效果)

具体实现

  • 将普通 2D 图层分割为三层:前景、中景及后景,(本项目示例中使用到的图层元素均来自自如 APP,接口拦截得到的)

  • 主要是通过 加速度传感器磁场传感器 感知设置倾斜角度,计算出前景和后景 View 在 X 、 Y 轴上应该移动的距离,中景保持不动,从而增加景深,实现伪 3D 效果

  • 创建工具类 GravityRotationHelper 在此类中通过 Lifecycle 更便捷的在上下文对象的生命周期中注册与反注册传感器监听,得到需要的传感器数值

  • 自定义 GravityRotationImageView 处理传感器数值,并判断当前 View 为前景还是后景,再通过 Scroller 辅助进行对应方向上的滚动

使用步骤

  • 1.复制类 GravityRotationHelperGravityRotationImageView 到项目中,并将其 自定义属性 复制至 attrs 中

  • 2.在布局中使用 GravityRotationImageView 装填前景及后景图片(将 GravityRotationImageView 当 ImageView 用即可)

    给后景设置 isBack 属性为 true 或在代码中进行设置
    
  • 3.创建 GravityRotationHelper 对象并绑定前后景 View :

    GravityRotationHelper(this).attachViews(viewBinding.ivFront, viewBinding.ivBack)
    

使用参考

About Me

  • Email: ziwen.lan@foxmail.com

About

通过 加速度传感器 和 磁场传感器 感知设备倾斜角度变化,计算并移动相应 View ,实现伪裸眼 3D 效果

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages