服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android GuideView实现首次登陆引导

Android GuideView实现首次登陆引导

2022-10-08 16:15冬天的蚊子 Android

这篇文章主要为大家详细介绍了Android GuideView实现首次登陆引导,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

简介:最最轻量级的新手引导库,能够快速为任何一个 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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);
}

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

原文链接:https://blog.csdn.net/qq_38729449/article/details/79009587

延伸 · 阅读

精彩推荐