Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

binaryshao/GuideView

Open more actions menu

Repository files navigation

写在前面

其实已经有很多类似的开源库,比较满意的是这个库:https://github.com/qiushi123/GuideView-master, 但它实现的效果和使用方式不是很6,本来是想对这个库提交PR,但发现改动有点小多,所以自己另写了这个库。

同时鸿神的这个库https://github.com/hongyangAndroid/Highlight 也不错,但可能我用的姿势不对,出现了找不到目标view坐标的问题,似乎也不支持fragment。

本开源库主要借鉴学习了这两个库的思路,在此向它们的作者们致谢!

demo演示

主要功能

  1. 提供【知道了】按钮,可简单地传入文字说明即可,点击【知道了】自动跳转
  2. 也可不用提供的【知道了】view,传入自定义的view,但需要在你希望的地方调用showNext()方法使引导视图在点击后继续跳转,详见demo。
  3. 构造方法中传入目标版本号,引导视图只会在目标版本中显示,不用担心app升级后会显示。
  4. 每个引导视图只会显示一次,根据版本号和目标viewId判断,所以不能有两个相同id的目标view。
  5. 记忆未显示的引导视图。示例:引导3、4、5在引导2后,显示引导2后退出app,下次到此位置会从引导3开始。
  6. 目标view3种显示形状、目标view和提示view8种相对位置、偏移量自定义
  7. 链式调用,丝般顺滑~

使用方法

  • 在项目的根 build.gradle 文件中添加:
allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}
  • 在模块中添加依赖:
compile 'com.github.Sbingo:GuideView:1.1.0'
  • 在代码中使用
//可选
TextView tv = new TextView(this);
        tv.setText("自定义提示view");
        tv.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
        tv.setTextSize(20);
        tv.setGravity(Gravity.CENTER);

        //测试时用这个方法
//        final GuideView.Builder builder = new GuideView.Builder(this, "1.0", true);
        //正式环境用这个方法,每个GuideView只会显示一次
        final GuideView.Builder builder = new GuideView.Builder(this, "1.0");
	//设置提示文字大小
	builder.setTextSize(20);
        //添加8个引导视图
        builder.addHintView(text1, "测试1", GuideView.Direction.TOP, GuideView.MyShape.ELLIPSE, -50, -200)
                .addHintView(text2, "测试2", GuideView.Direction.RIGHT_BOTTOM, GuideView.MyShape.RECTANGULAR)
                .addHintView(text3, "测试3", GuideView.Direction.LEFT_BOTTOM, GuideView.MyShape.CIRCULAR)
                .addHintView(text4, "测试4", GuideView.Direction.RIGHT_TOP, GuideView.MyShape.ELLIPSE)
                .addHintView(text5, "测试5", GuideView.Direction.LEFT_TOP, GuideView.MyShape.CIRCULAR)
                .addHintView(text6, "测试6", GuideView.Direction.RIGHT, GuideView.MyShape.CIRCULAR)
                .addHintView(text7, "测试7", GuideView.Direction.LEFT, GuideView.MyShape.CIRCULAR)
                .addHintView(text8, tv, GuideView.Direction.BOTTOM, GuideView.MyShape.RECTANGULAR, -100, 100, new GuideView.OnClickCallback() {
                    @Override
                    public void onGuideViewClicked() {
	                     /*
				        自定义视图需要调用showNext()方法使引导视图在点击后继续跳转
				        调用处可以在点击自定义视图上某处时,不一定要在这里,这里只是示例
				         */
                        builder.showNext();
                    }
                });
        builder.show();

提供了6种addHintView方法,每调用一次该方法就是增加了一个引导视图。

主要参数为目标view,提示文字或提示view,提示相对于目标view的位置,高亮区域形状(圆形、矩形或椭圆)、偏移量、点击监听。

ChangeLog

v1.1.0 可以设置目标版本,只在目标版本中显示

v1.0.5 增加改变文字大小的api

v1.0.0 初始版本

公众号

as彬哥六六六

About

功能引导视图,支持fragment,只显示一次,接入超简单顺滑

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.