Android 新手引导蒙层效果实现代码示例
程序员文章站
2024-02-23 16:05:58
先上效果图:
这个效果一开始我是想直接让ui给个切图,后来发现这样不行,适配很差,达不到效果。所以就自己动手写代码,其实思路也很简单:在这个布局的父布局上面再手动...
先上效果图:
这个效果一开始我是想直接让ui给个切图,后来发现这样不行,适配很差,达不到效果。所以就自己动手写代码,其实思路也很简单:在这个布局的父布局上面再手动添加一个view(通常linearlayout比较方便),然后把这个linearlayout的背景设置成#88000000,之后就是给这个linearlayout动态增加子view,初步效果就能达到。
下面直接上代码:
public void showguideview() { view view = getwindow().getdecorview().findviewbyid(r.id.activity_main); if (view == null) return; viewparent viewparent = view.getparent(); if (viewparent instanceof framelayout) { final framelayout frameparent = (framelayout) viewparent;//整个父布局 final linearlayout linearlayout = new linearlayout(this);//新建一个linearlayout linearlayout.setlayoutparams(new linearlayout.layoutparams(viewgroup.layoutparams.match_parent, viewgroup.layoutparams.match_parent)); linearlayout.setorientation(linearlayout.vertical); linearlayout.setbackgroundresource(#88000000);//背景设置灰色透明 linearlayout.setgravity(gravity.center_horizontal); linearlayout.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { frameparent.removeview(linearlayout); } }); rect rect = new rect(); point point = new point(); nearby.getglobalvisiblerect(rect, point); //获得nearby这个控件的宽高以及xy坐标 nearby这个控件对应就是需要高亮显示的地方 imageview topguideview = new imageview(this); topguideview.setlayoutparams(new viewgroup.layoutparams(rect.width(), rect.height())); topguideview.setbackgroundresource(r.drawable.iv_topguide); rect rt = new rect(); getwindow().getdecorview().getwindowvisibledisplayframe(rt); topguideview.sety(point.y - rt.top);//rt.top是手机状态栏的高度 imageview bottomguideview = new imageview(this); bottomguideview.setlayoutparams(new viewgroup.layoutparams(wrap_content, wrap_content)); bottomguideview.setbackgroundresource(r.drawable.iv_bottomguide); bottomguideview.sety(point.y + topguideview.getheight()); linearlayout.addview(topguideview); linearlayout.addview(bottomguideview); frameparent.addview(linearlayout); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。