Skip to content
Hu XiBing edited this page Jul 9, 2018 · 2 revisions

主要类详解

NewbieGuide

NewbieGuide.with() 为入口方法,返回Builder对象,用于构建引导层

Builder

引导层的建造者对象,一个引导层可以包含多个引导页。

方法 含义
setLabel 设置引导层标示区分不同引导层,必传!否则报错
setOnGuideChangedListener 设置引导层的显示与消失监听
setOnPageChangedListener 设置引导页切换监听
alwaysShow 是否每次都显示引导层,默认false,只显示一次
addGuidePage 添加一页引导页
build 生成Controller对象,控制引导层的显示,隐藏等操作
show 直接显示引导层,内部是调用Controller的show方法
anchor 引导层显示的锚点,即根布局,不设置的话默认是decorView(v2.1.0版本添加) v2.3.0默认修改为android.R.id.content
setShowCounts 引导层的显示次数,默认是1次。(v2.1.0版本添加)

GuidePage (v1.2.0版本新增)

引导页对象,包含一张引导页的信息,如高亮的view,布局,跳转控件id,背景色等。

方法 含义
addHighLight 添加引导页高亮的view
setLayoutRes 引导页布局,第二个可变参数为点击跳转下一页或者消失引导层的控件id
setEverywhereCancelable 是否点击任意地方跳转下一页或者消失引导层,默认true
setBackgroundColor 设置引导页背景色,建议使用有透明度的颜色,默认背景色为:0xb2000000
setOnLayoutInflatedListener 设置自定义layout填充监听,用于自定义layout初始化
setEnterAnimation 设置进入动画
setExitAnimation 设置退出动画

Controller

通过Builder.build()方法返回,用于控制引导层的显示,隐藏等操作

方法 含义
show 显示引导层的第一页
resetLabel 设置此引导层从没有显示过
remove 移除引导层
showPreviewPage 显示前一页page(v2.2.1新增)
showPage(int position) 显示position位置引导页 (v2.2.1新增)

HighlightOptions (v2.4.0新增)

由于后续新增了很多高亮相关的api,沿用原有重载方法会导致参数过多。因此抽取Options类,用于处理额外的设置。
通过内部Builder对象构建,有如下set方法:

方法 含义
setOnClickListener 高亮区域点击事件
setRelativeGuide 高亮相对位置引导布局
setOnHighlightDrewListener 高亮绘制后回调该监听,用于绘制额外内容

v2.x版本api变化

相较与v1.x版本,改动看似很大,实际上只是把Page单独抽离出来,通过addGuidePage方法添加一页代替之前的asPage,使其符合面对对象。

NewbieGuide.with(this)
                .setLabel("page")//设置引导层标示区分不同引导层,必传!否则报错
                .setOnGuideChangedListener(new OnGuideChangedListener() {
                    @Override
                    public void onShowed(Controller controller) {
                        Log.e(TAG, "NewbieGuide onShowed: ");
                        //引导层显示
                    }

                    @Override
                    public void onRemoved(Controller controller) {
                        Log.e(TAG, "NewbieGuide  onRemoved: ");
                        //引导层消失(多页切换不会触发)
                    }
                })
                .setOnPageChangedListener(new OnPageChangedListener() {
                    @Override
                    public void onPageChanged(int page) {
                        Log.e(TAG, "NewbieGuide  onPageChanged: " + page);
                        //引导页切换,page为当前页位置,从0开始
                    }
                })
                .alwaysShow(true)//是否每次都显示引导层,默认false,只显示一次
                .addGuidePage(//添加一页引导页
                        GuidePage.newInstance()//创建一个实例
                                .addHighLight(button)//添加高亮的view
                                .addHighLight(tvBottom, HighLight.Shape.RECTANGLE)
                                .setLayoutRes(R.layout.view_guide)//设置引导页布局
                                .setOnLayoutInflatedListener(new OnLayoutInflatedListener() {
                                    @Override
                                    public void onLayoutInflated(View view, Controller controller) {
                                        //引导页布局填充后回调,用于初始化
                                        TextView tv = view.findViewById(R.id.textView2);
                                        tv.setText("我是动态设置的文本");
                                    }
                                })
                                .setEnterAnimation(enterAnimation)//进入动画
                                .setExitAnimation(exitAnimation)//退出动画
                )
                .addGuidePage(
                        GuidePage.newInstance()
                                .addHighLight(tvBottom, HighLight.Shape.RECTANGLE,20)
                                .setLayoutRes(R.layout.view_guide_custom, R.id.iv)//引导页布局,点击跳转下一页或者消失引导层的控件id
                                .setEverywhereCancelable(false)//是否点击任意地方跳转下一页或者消失引导层,默认true
                                .setBackgroundColor(getResources().getColor(R.color.testColor))//设置背景色,建议使用有透明度的颜色
                                .setEnterAnimation(enterAnimation)//进入动画
                                .setExitAnimation(exitAnimation)//退出动画
                )
                .show();//显示引导层(至少需要一页引导页才能显示)

v1.x.x版本使用

基本使用:

NewbieGuide.with(this)//传入activity
                .setLabel("guide1")//设置引导层标示,用于区分不同引导层,必传!否则报错
                .addHighLight(textView, HighLight.Type.RECTANGLE)//添加需要高亮的view
                .setLayoutRes(R.layout.view_guide)//自定义的提示layout,不要添加背景色,引导层背景色通过setBackgroundColor()设置
                .show();//显示引导层

更多参数

//新增多页模式,即一个引导层显示多页引导内容
NewbieGuide.with(this)
               .setLabel("page")//设置引导层标示区分不同引导层,必传!否则报错
               .setOnGuideChangedListener(new OnGuideChangedListener() {
                   @Override
                   public void onShowed(Controller controller) {
                       Log.e(TAG, "NewbieGuide onShowed: ");
                       //引导层显示
                   }

                   @Override
                   public void onRemoved(Controller controller) {
                       Log.e(TAG, "NewbieGuide  onRemoved: ");
                       //引导层消失(多页切换不会触发)
                   }
               })
               .setOnPageChangedListener(new OnPageChangedListener() {
                   @Override
                   public void onPageChanged(int page) {
                       Log.e(TAG, "NewbieGuide  onPageChanged: " + page);
                       //引导页切换,page为当前页位置,从0开始
                   }
               })
               .alwaysShow(true)//是否每次都显示引导层,默认false,只显示一次
               /*-------------以上元素为引导层属性--------------*/

               .addHighLight(textView)//设置高亮的view
               .setLayoutRes(R.layout.view_guide)//设置引导页布局
               .asPage()//保存参数为第一页
               /*------------- 第一页引导页的属性 --------------*/

               .addHighLight(button)//从新设置第二页的参数
               .setLayoutRes(R.layout.view_guide)
               .asPage()
               /*------------- 第二页引导页的属性 --------------*/

               .addHighLight(textView)
               .setLayoutRes(R.layout.view_guide_custom, R.id.iv)//引导页布局,点击跳转下一页或者消失引导层的控件id
               .setEveryWhereCancelable(false)//是否点击任意地方跳转下一页或者消失引导层,默认true
               .fullScreen(true)//是否全屏,即是否包含状态栏,默认false,设置为true需要Activity设置为全屏或者沉浸式状态栏
               .setBackgroundColor(getResources().getColor(R.color.testColor))//设置引导页背景色,建议使用有透明度的颜色,默认背景色为:0xb2000000
//                .asPage()//只有一页或者最后一页可以省略
               /*------------- 第三页引导页的属性 --------------*/

               .show();//显示引导层