Android 新手引导库 简单方便

        最近聊到一些朋友待业的消息 (资金链断的 、裁员的 、公司解散的)导致待业状态 ,似乎很少有主动辞职了 。年初还能看一些公众号文章说是环境不好的相关话题 ,现在好像是沉静下来了但是几乎都知道外面天气冷 。最近收到类似的消息多了之后 ,结果昨天晚上做梦我去面试了 ,最玄乎的是被面试官给虐成菜但是结果成了 ,面试官看着我在微笑。。。。我心里想(美得你)。

 

 

        新手引导库顾名思义就是在第一次使用 APP 的一些功能指引 ,但是这一版本需要加在了改动的班级详情页面 。按我的技术思维来说有点不太合理 ,但是产品可能考虑到自己新改版功能的易用性和新旧体验差的问题 。俺也不敢问做就行了 。然后就在群里发了一句 " 老哥们 ,我需要新手引导库 " ---- 嗖嗖嗖 给了一堆 。哈哈哈哈哈  ,简单记录一下 。

 

上 UI 图 

 

需求:引导 1 、引导 2 ...  (按照数据情况进行显示)  哈哈哈 ,我内心在笑 。。。

 

我使用的是 https://github.com/binIoter/GuideView  这个项目 。

原因 

         最近一次提交代码日期可以接受 ,这一点我想简单说一下关于 Github 上所有的库 ,在选择的时候尽量看一下最近的提交记录 ,就比如买一些东西的时候可能会看一下保质期 。表述的实现逻辑很清晰并且也可以接受 ,可以根据 View 的位置自己去定位显示高亮 ,在里面的实现代码中就简单的几个类 ,总体来说简单方便而且扩展性强。我并没有直接按照 README.md 上的操作引入依赖使用这个库 ,clone 运行之后发现代码挺简洁的 ,简洁的用 moudle 去引入他就是一个浪费 ,直接在项目建个包放进去使用就 OK 了 ,无缝衔接 。

 

实现逻辑

可以用一句话概括 GuideView  " 为一个 Activity 里的任何一个 View 控件创建一个遮罩式的引导页 " 。

1. 首先该库适用于 Xml 里面的所有控件 View ,使用 ID 去进行操作

2. 通过 View 去计算它在屏幕上的区域 Rect

  /**
   * Rect在屏幕上去掉状态栏高度的绝对位置
   */
  static Rect getViewAbsRect(View view, int parentX, int parentY) {
    int[] loc = new int[2];
    view.getLocationInWindow(loc);
    Rect rect = new Rect();
    rect.set(loc[0], loc[1], loc[0] + view.getMeasuredWidth(), loc[1] + view.getMeasuredHeight());
    rect.offset(-parentX, -parentY);
    return rect;
  }

3. 绘制一个覆盖整个 Activity 的遮层 ,可以自定义蒙板的颜色和透明度 ,目标 VIew 不会被绘制从而是实现高亮 。(这一点我是很认可的 ,比较喜欢这个逻辑)

4. 接下来是相对于这个 Rect 区域绘制一些图片和文字 ,把这些东西抽象成一个接口 Compoent 。

 

PS:顶层实现漏记是根据一些参数生成的自定义 View MaskView 并且添加到 Activity 的DecorView 中作为子 View 。

 

PS:还有一个小点就是这个是依赖于 Activity 的DecorVIew ,所以如果是在 Fragment 中使用在位置或者复用的时候会有小瑕疵 。整体问题不大 。

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值