这几年工作发现一个定律,新年前一定有一个大项目,项目优先度一定高,排期一定倒着排,程序员一定要加班。就好像,缺了这个项目,发年终奖就亏了一样。

新需求有多个引导蒙层,蒙层需要漏出被引导的按钮区域,时间上调研一下已有的三方控件来不及了,简单的写死位置难以适配多种机型,activity嵌套多个fragment的结构也不允许在布局文件内硬编码一个蒙层。

所以,只能用最短的方式写一个带挖孔的蒙层,配合引导图使用。

蒙层view代码

public class ShadowView extends View {Paint pRect = new Paint();private Rect mRect = new Rect();private View mView;private int[] location = new int[2];public ShadowView(Context context) {super(context);pRect.setColor(getResources().getColor(R.color.b_c0_64));pRect.setAntiAlias(true);}public ShadowView(Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attrs) {super(context, attrs);}public ShadowView(Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}/*** 引导区域View** @param view*/public void setView(View view) {mView = view;}/*** 设置引导区域** @param rect*/public void setRect(Rect rect) {mRect = rect;}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (mView != null) {mView.getLocationInWindow(location);mRect.left = location[0];mRect.top = location[1];mRect.right = location[0] + mView.getMeasuredWidth();mRect.bottom = location[1] + mView.getMeasuredHeight();}if (mRect != null) {canvas.drawRect(0, 0, getWidth(), mRect.top, pRect);canvas.drawRect(0, mRect.bottom, getWidth(), getHeight(), pRect);canvas.drawRect(0, mRect.top, mRect.left, mRect.bottom, pRect);canvas.drawRect(mRect.right, mRect.top, getWidth(), mRect.bottom, pRect);}}
}

这样,简单的蒙层view就实现了。

这个蒙层可以通过传递view,或传递view相对于屏幕的位置(Rect),就能在对应的view上下左右各绘制一个黑色半透明蒙层,用的时候直接add到decor view 上就可以

FrameLayout frameLayout = (FrameLayout) getWindow().getDecorView();mShadowView = new ShadowView(this);frameLayout.addView(mShadowView);mShadowView.setView(targetView);

注意,引导结束后一定要移除shadowview哦。

FrameLayout frameLayout = (FrameLayout) getWindow().getDecorView();frameLayout.removeView(mShadowView);

【歪门邪道】Android页面上快速实现蒙层引导需求相关推荐

  1. html 页面怎么自动定位到某个标签,JS如何实现在页面上快速定位(锚点跳转问题)...

    本文介绍了JS如何实现在页面上快速定位(锚点跳转问题),分享给大家,具体如下: 1. 锚点跳转简介 锚点其实就是可以让页面定位到某个位置上的点.在高度较高的页面中经常见到. 锚点跳转有两种形式: a标 ...

  2. 小程序影藏溢出的gif_如何在Android手机上快速实现视频转GIF动图呢?

    毫无疑问,Android是目前使用最广泛的手机系统.GIF很有趣,并且比视频占用更少的存储容量.本文将向您介绍如何在Android手机上快速转GIF动图的多种方法. [官网]万兴优转 - 顶尖音视频格 ...

  3. 在web页面上快速生成二维码的三种实用方法

    转载自:在web页面上快速生成二维码的三种实用方法 二维码是桌面和移动端快速分享的高效手段之一,这里介绍两个不错的快速开发二维码的方法,和大家分享一下~~ 方法1:使用极客标签提供的二维码快速生成服务 ...

  4. 在html页面上包含如下创建层,网页设计与制作试卷A答案

    浙江**学院<网页设计与制作>期终(考试)A 卷 200 -200 学年 第 学期 任课教师 学院 班 姓名 学号 一.单选题(每小题1分,共30分) 1. 本地站点的所有文件和文件夹必须 ...

  5. html js控制页面蒙版,js实现在页面上弹出蒙板技巧简单实用

    蒙板是两个div,其中popWindow样式的div用于遮住整个页面,并半透明.maskLayer 在popWindow上面,用于显示蒙板的信息,比如"载入中--" .popWin ...

  6. Android应用开发—RecyclerView绘制蒙层

    背景:如何在跨越两个或两个以上的item绘制一个view,该view需要跟随recyclerView的滑动而整体移动. @Overridepublic void onDrawOver(Canvas c ...

  7. 在web页面上快速生成批量二维码的实用方法

    最近帮同事制作了一个二维码工具,需求是一次性输入多个卡号批量生成二维码并打印.好了,现在我们直接看代码: <!DOCTYPE html> <html><head>& ...

  8. android播放页蒙层过渡效果,EasyGuideLayer: 这可能是最简单、灵活、强大的页面蒙层组件了!...

    原标题:EasyGuideLayer: 这可能是最简单.灵活.强大的页面蒙层组件了! 顾名思义,EasyGuideLayer是用于进行Android页面蒙层引导的组件. 特性 链式调用.调用逻辑清晰直 ...

  9. android 线性布局蒙层,Android开发 - 掌握ConstraintLayout(一)传统布局的问题

    在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面.随着 ...

最新文章

  1. Redhat Linux RHEL6配置本地YUM源及错误处理
  2. MyBatisPlus插件扩展_PaginationInterceptor分页插件的使用
  3. android模拟器上安装/卸载app
  4. 光源时间_缩短背光源的使用寿命的原因
  5. 训练日志 2018.9.1
  6. 实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存
  7. mac电脑bash_profile创建,打开,编辑,保存
  8. 【Flink】Zookeeper connection loss leads to Flink job restart
  9. 记一次服务器本地Tomcat能访问,但远程访问不了的解决方案
  10. 使用 Apache JMeter™工具进行性能测试
  11. 《Python自动化》学习笔记:百度云智能实现黑白图片上色,人物动漫化(代码干货)
  12. linux chmod -r,linux chmod -R 777 / 的危害
  13. 【谷歌翻译】【CVPR15】Saliency-Aware Geodesic Video Object Segmentation
  14. Incorrect string value: '\xE5\xA4\xA7\xE5\xB9\x85...' for column' name' at row 1的解决方法
  15. Maven的依赖与最佳配置(转载自Maven实战 作者许晓斌)
  16. 在痛苦的日子里笑出声来
  17. java计算机毕业设计体育新闻网站源码+系统+数据库+lw文档+mybatis+运行部署
  18. E500 TLB miss 及 DSI处理分析(2)
  19. 四则运算算法实现(java)
  20. 坐标系统投影变换分带方法

热门文章

  1. 上市公司融资约束SA测算以及结果(2000-2019)
  2. c++ 小游戏 NO6 跑酷游戏
  3. 娱美德举办WEMIX空投活动以庆祝《传奇M》在全球发布!
  4. 什么是web前端技术?要学什么?
  5. Oracle_登录数据库系统
  6. Python常用第三方库
  7. 学习安装unik环境——过程一
  8. 前端学习-数据可视化(个人笔记)
  9. 《饥饿游戏》第三章-26
  10. 高一对口计算机试题及答案,高一计算机考试模拟题?