huburt-Hu / NewbieGuide

Android 快速实现新手引导层的库,通过简洁链式调用,一行代码实现引导层的显示
Apache License 2.0
3.56k stars 521 forks source link

多页引导页如何增加RecyclerView item? #111

Open ghost opened 5 years ago

ghost commented 5 years ago

你好,多页引导页和RecyclerView可以一起使用吗?

stonehiy commented 5 years ago

可以一起使用

 /**
     * 初始化引导页面
     */
    private void initNewbieGuide() {

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

                    @Override
                    public void onRemoved(Controller controller) {
                        //引导层消失(多页切换不会触发)
                    }
                })
                .setOnPageChangedListener(new OnPageChangedListener() {
                    @Override
                    public void onPageChanged(int page) {
                        //引导页切换,page为当前页位置,从0开始
                    }
                })
//                .alwaysShow(false)//是否每次都显示引导层,默认false,只显示一次
                .alwaysShow(true)//总是显示,调试时可以打开
                .addGuidePage(//添加一页引导页
                        GuidePage.newInstance()//创建一个实例
                                .addHighLight(mLlCar, HighLight.Shape.ROUND_RECTANGLE, 10, -15,
                                        new RelativeGuide(R.layout.view_relative_guide_home_1, Gravity.BOTTOM, 50) {
                                            @Override
                                            protected void offsetMargin(MarginInfo marginInfo, ViewGroup viewGroup, View view) {
//                                        marginInfo.leftMargin += 100;
                                            }
                                        })
                                .setLayoutRes(R.layout.view_guide_home_1, R.id.tvNext)//设置引导页布局
                                .setEverywhereCancelable(false)
                                .setOnLayoutInflatedListener(new OnLayoutInflatedListener() {
                                    @Override
                                    public void onLayoutInflated(View view, Controller controller) {

                                    }

                                })
//                                .setEnterAnimation(enterAnimation)//进入动画
//                                .setExitAnimation(exitAnimation)//退出动画
                )
                .addGuidePage(//添加一页引导页
                        GuidePage.newInstance()//创建一个实例
                                .addHighLight(mLlDriver, HighLight.Shape.ROUND_RECTANGLE, 10, -15,
                                        new RelativeGuide(R.layout.view_relative_guide_home_2, Gravity.BOTTOM, 50) {
                                            @Override
                                            protected void offsetMargin(MarginInfo marginInfo, ViewGroup viewGroup, View view) {
//                                        marginInfo.leftMargin += 100;
                                            }
                                        })
                                .setLayoutRes(R.layout.view_guide_home_1, R.id.tvNext)//设置引导页布局
                                .setEverywhereCancelable(false)
                                .setOnLayoutInflatedListener(new OnLayoutInflatedListener() {
                                    @Override
                                    public void onLayoutInflated(View view, Controller controller) {

                                    }

                                })
//                                .setEnterAnimation(enterAnimation)//进入动画
//                                .setExitAnimation(exitAnimation)//退出动画
                )
                .addGuidePage(//添加一页引导页
                        GuidePage.newInstance()//创建一个实例
                                .addHighLight(mLlContract, HighLight.Shape.ROUND_RECTANGLE, 10, -15,
                                        new RelativeGuide(R.layout.view_relative_guide_home_3, Gravity.BOTTOM, 50) {
                                            @Override
                                            protected void offsetMargin(MarginInfo marginInfo, ViewGroup viewGroup, View view) {
//                                        marginInfo.leftMargin += 100;
                                            }
                                        })
                                .setLayoutRes(R.layout.view_guide_home_1)//设置引导页布局
                                .setEverywhereCancelable(false)
                                .setOnLayoutInflatedListener(new OnLayoutInflatedListener() {
                                    @Override
                                    public void onLayoutInflated(View view, Controller controller) {
                                        view.findViewById(R.id.tvNext).setOnClickListener(new View.OnClickListener() {
                                            @Override
                                            public void onClick(View v) {
                                                initRecyclerViewGuide();
                                                controller.remove();
                                            }
                                        });

                                    }

                                })
//                                .setEnterAnimation(enterAnimation)//进入动画
//                                .setExitAnimation(exitAnimation)//退出动画
                )

                .show();//显示引导层(至少需要一页引导页才能显示)

    }

    private void initRecyclerViewGuide() {
        mRecyclerView.post(new Runnable() {
            @Override
            public void run() {
                NewbieGuide.with(HomeFragment.this)
                        .setLabel("grid_view_guide")
                        .alwaysShow(true)
                        .addGuidePage(GuidePage.newInstance()
                                        .addHighLight(mRecyclerView.getChildAt(1), HighLight.Shape.CIRCLE, -25,
                                                new RelativeGuide(R.layout.view_relative_guide_home_4, Gravity.BOTTOM, 50) {
                                                    @Override
                                                    protected void offsetMargin(MarginInfo marginInfo, ViewGroup viewGroup, View view) {
//                                        marginInfo.leftMargin += 100;
                                                    }
                                                })
                                        .setLayoutRes(R.layout.view_guide_home_4, R.id.tvNext)//设置引导页布局
                                        .setEverywhereCancelable(false)
                                        .setOnLayoutInflatedListener(new OnLayoutInflatedListener() {
                                            @Override
                                            public void onLayoutInflated(View view, Controller controller) {

                                            }

                                        })
//                                .setEnterAnimation(enterAnimation)//进入动画
//                                .setExitAnimation(exitAnimation)//退出动画
                        )
                        .show();
            }
        });
    }