欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android GuideView实现首次登陆引导

程序员文章站 2022-11-14 10:28:11
简介:最最轻量级的新手引导库,能够快速为任何一个 view 创建一个遮罩层,支持单个页面,多个引导提示,支持为高亮区域设置不同的图形,支持引导动画,方便扩展 项目地址:b...

简介:最最轻量级的新手引导库,能够快速为任何一个 view 创建一个遮罩层,支持单个页面,多个引导提示,支持为高亮区域设置不同的图形,支持引导动画,方便扩展

项目地址:binioter/guideview

guideview

本系统能够快速的为一个 activity 里的任何一个 view 控件创建一个遮罩式的导航页。

工作原理

首先它需要一个目标 view 或者它的 id,我们通过 findviewbyid 来得到这个 view,计算它在屏幕上的区域 targetrect,通过这个区域,开始绘制一个覆盖整个 activity 的遮罩,可以定义遮罩的颜色和透明度,然而目标 view 被绘制成透明从而实现高亮的效果。接下来是在相对于这个 targetrect 的区域绘制一些图片或者文字。我们把这样一张图片或者文字抽象成一个 component 接口,设置文字或者图片,所有的图片文字都是相对于 targetrect 来定义的。可以设定额外的 x,y 偏移量,可以对遮罩系统设置可见状态的发生变化时的监听回调,可以对遮罩系统设置开始和结束时的动画效,另外,我们可以不对整个 activity 覆盖遮罩,而是对某一个 view 覆盖遮罩。

注意:具体用法参见 demo,内附详细注释

Android GuideView实现首次登陆引导

Android GuideView实现首次登陆引导

Android GuideView实现首次登陆引导

Android GuideView实现首次登陆引导

Android GuideView实现首次登陆引导

usage

 public class simplecomponent implements component {
 
  @override
  public view getview(layoutinflater inflater) {
     linearlayout ll = new linearlayout(inflater.getcontext());
     linearlayout.layoutparams param =
         new linearlayout.layoutparams(linearlayout.layoutparams.match_parent, linearlayout.layoutparams.wrap_content);
     ll.setorientation(linearlayout.vertical);
     ll.setlayoutparams(param);
     textview textview = new textview(inflater.getcontext());
     textview.settext(r.string.welcome);
     textview.settextcolor(inflater.getcontext().getresources().getcolor(r.color.color_white));
     textview.settextsize(20);
     imageview imageview = new imageview(inflater.getcontext());
     imageview.setimageresource(r.mipmap.arrow);
     ll.removeallviews();
     ll.addview(textview);
     ll.addview(imageview);
     ll.setonclicklistener(new view.onclicklistener() {
       @override
       public void onclick(view view) {
         toast.maketext(view.getcontext(), "引导层被点击了", toast.length_short).show();
 
       }
     });
     return ll;
  }
 
    @override
    public int getanchor() {
       return component.anchor_bottom;
    }
 
    @override
    public int getfitposition() {
       return component.fit_start;
    }
 
    @override
    public int getxoffset() {
        return 30;
    }
 
    @override
    public int getyoffset() {
       return 0;
    }
  }
 
 public void showguideview() {  
   final guidebuilder builder1 = new guidebuilder();
   builder1.settargetview(button1)
       .setalpha(150)
       .setoverlaytarget(true)//设置目标区域是否高亮显示
       .setoutsidetouchable(false);
   builder1.setonvisibilitychangedlistener(new guidebuilder.onvisibilitychangedlistener() {
     @override
     public void onshown() {
       // toast.maketext(mutiguideviewactivity.this, "show", toast.length_short).show();
       }
     @override
     public void ondismiss() {
       button2.post(new runnable() {
         @override
         public void run() {
           showguideview2();
         }
       });
       // toast.maketext(mutiguideviewactivity.this, "dismiss", toast.length_short).show();
     }
   });
 
   builder1.addcomponent(new simplecomponent());
   guide guide = builder1.createguide();
   guide.setshouldchecklocinwindow(false);
   guide.show(mutiguideviewactivity.this);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。