Skip to content
Yanzhikai edited this page Oct 23, 2017 · 1 revision

YGuider

方法介绍

关于设置目标的方法


    /**
     * 增加一个扫描区域
     * @param targetView 目标View
     * @param text 说明文字
     * @param wOffsetX 弹出窗口的X位置偏移量(初始位置为目标View中间)
     * @param wOffsetY 弹出窗口的Y位置偏移量(初始位置为目标View正下方)
     */
    public void addNextTarget(View targetView, String text, int wOffsetX, int wOffsetY);

    /**
     * 增加一个扫描区域
     * @param targetView 目标View
     * @param text 说明文字
     * @param wOffsetX 弹出窗口的X位置偏移量(初始位置为目标View中间)
     * @param wOffsetY 弹出窗口的Y位置偏移量(初始位置为目标View正下方)
     * @param wWidth 弹出窗口的宽度
     * @param wHeight 弹出窗口的高度
     */
    public void addNextTarget(View targetView, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight);

    /**
     * 增加一个扫描区域
     * @param targetView 目标View
     * @param text 说明文字
     * @param wOffsetX 弹出窗口的X位置偏移量(初始位置为目标View中间)
     * @param wOffsetY 弹出窗口的Y位置偏移量(初始位置为目标View正下方)
     * @param wWidth 弹出窗口的宽度
     * @param wHeight 弹出窗口的高度
     * @param jumpText 跳过选项的文字
     * @param nextText 下一步选项的文字
     */
    public void addNextTarget(View targetView, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight, String jumpText, String nextText);

    /**
     * 增加一个扫描区域
     * @param targetRegion 目标区域的坐标矩阵
     * @param text 说明文字
     * @param wOffsetX 弹出窗口的X位置偏移量(初始位置为目标View中间)
     * @param wOffsetY 弹出窗口的Y位置偏移量(初始位置为目标View正下方)
     */
    public void addNextTarget(RectF targetRegion, String text, int wOffsetX, int wOffsetY);

    /**
     * 增加一个扫描区域
     * @param targetRegion 目标区域的坐标矩阵
     * @param text 说明文字
     * @param wOffsetX 弹出窗口的X位置偏移量(初始位置为目标View中间)
     * @param wOffsetY 弹出窗口的Y位置偏移量(初始位置为目标View正下方)
     * @param wWidth 弹出窗口的宽度
     * @param wHeight 弹出窗口的高度
     */
    public void addNextTarget(RectF targetRegion, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight);

    /**
     * 增加一个扫描区域
     * @param targetRegion 目标区域的坐标矩阵
     * @param text 说明文字
     * @param wOffsetX 弹出窗口的X位置偏移量(初始位置为目标View中间)
     * @param wOffsetY 弹出窗口的Y位置偏移量(初始位置为目标View正下方)
     * @param wWidth 弹出窗口的宽度
     * @param wHeight 弹出窗口的高度
     * @param jumpText 跳过选项的文字
     * @param nextText 下一步选项的文字
     */
    public void addNextTarget(RectF targetRegion, String text, int wOffsetX, int wOffsetY, int wWidth, int wHeight, String jumpText, String nextText);

    /**
     * 增加一些Target
     * @param targets 一些ScanTarget对象
     */
    public void addTarget(ScanTarget... targets);

  注意,执行完上面的增加操作之后需要prepare(),才能让YGuider获得目标View位置属性。


    /**
     * 开始Guide
     */
    public void startGuide();

    /**
     * 进入下一个引导
     */
    public void startNextGuide();

    /**
     * 退出新手引导
     */
    public void cancelGuide();

	/**
     * 移除目标
     * @param index 目标的index
     * @return 移除目标成功与否
     */
    public boolean removeTarget(int index);

    /**
     * 清除所有扫描目标
     */
    public void clearTargets();

    /**
     * 判断在当前ContentView是否已经初始化宽高属性
     * 如果是,则直接获取目标View的位置信息,写入目标列表
     * 如果不是,则等到ContentView初始化宽高属性之后再获取
     */
    public void prepare();

设置自定义属性的方法

  这些方法用于设置一些YGuider本身已有默认值的属性,替换


    /**
     * 设置扫描框动画刷新的时间间隔,默认值是20
     * @param refreshTime 单位是ms
     */
    public void setMaskRefreshTime(int refreshTime);

    /**
     * 设置扫描框移动动画的持续时间,默认值是500
     * @param moveDuration 单位是ms
     */
    public void setMaskMoveDuration(int moveDuration);

    /**
     * 设置扫描框扩大动画的持续时间,默认值是500
     * @param expandDuration 单位是ms
     */
    public void setExpandDuration(int expandDuration);

    /**
     * 设置遮罩层的颜色,最后是设置成透明的,默认颜色是#aa222222
     * @param color 颜色
     */
    public void setMaskColor(@ColorInt int color);

    /**
     * 设置画扫描框的画笔
     * @param paint 画笔
     */
    public void setMaskPaint(Paint paint);

    /**
     * 设置弹窗里面TextView文字出现的速度,默认值是100
     * @param refreshTime 每次增加文字的时间间隔,单位ms
     */
    public void setWindowTyperRefreshTime(int refreshTime);

    /**
     * 弹窗里面说明文字的字体大小,默认值是18sp
     * @param size 字体大小
     */
    public void setWindowTyperTextSize(int size);

    /**
     * 设置弹窗里面TextView文字的增长速度,默认值是1
     * @param increase 每次增加多少个字符
     */
    public void setWindowTyperIncrease(int increase);

    /**
     * 设置跳过按钮的文字
     * @param jumpText 跳过文字
     */
    public void setJumpText(String jumpText);

    /**
     * 设置下一步按钮的文字
     * @param nextText 下一步文字
     */
    public void setNextText(String nextText);

    /**
     * 设置弹窗背景
     * @param idRes 背景DrawableId
     */
    public void setWindowBackground(@DrawableRes int idRes);

    /**
     * 设置跳过和下一步按钮文字大小
     * @param size 文字字体大小
     */
    public void setWindowJumpAndNextTextSize(int size);

    /**
     * 设置自定义弹窗布局
     * 注意新的布局要有TyperTextView类,id设置为ttv_tips
     * 跳过按钮和下一步按钮可以选择实现,但是有的话id请分别设置为tv_jump和tv_next,其他可以自定义
     * @param layouId 布局的id
     */
    public void setWindowContent(@LayoutRes int layouId);

回调

  YGuider的回调分为状态回调OnGuiderChangedListener和点击回调OnGuiderClickListener

/**
 * YGuider状态变化的回调
 */
public interface OnGuiderChangedListener {
    /**
     * 引导开始时候回调
     */
    void onGuiderStart();

    /**
     * 跳转到下一个目标时候的回调
     * @param nextIndex 下一个目标的index
     */
    void onGuiderNext(int nextIndex);

    /**
     * 引导完成之后的回调
     */
    void onGuiderFinished();
}

/**
 * 各种点击事件的回调
 */
public interface OnGuiderClickListener {
    /**
     * 当遮罩层空白处被点击时候的回调
     */
    void onMaskClick();

    /**
     * 当下一步按钮被点击时的回调
     * @param nextIndex 下一目标的index
     */
    void onNextClick(int nextIndex);

    /**
     * 当前高亮/扫描目标区域被点击时的回调
     * @param index 当前目标区域的index
     */
    void onTargetClick(int index);

    /**
     * 当跳过按钮被点击时的回调
     */
    void onJumpClick();
}

  注意:这些都是接口,实现它们的话就必须重写里面的所有方法,所以这里有一个继承它们的抽象类OnGuiderListener实现它的子类的话可以选择性地重写一些回调方法(这个设计参考了GestureDetector的SimpleOnGestureDetector),所以有下面设置回调的方法:

    /**
     * 设置点击回调
     * @param guiderClickListener 可以传入OnGuiderClickListener和OnGuiderListener的子类
     */
    public void setOnGuiderClickListener(OnGuiderClickListener guiderClickListener){
        mMask.setOnGuiderClickListener(guiderClickListener);
    }

    /**
     * 设置状态回调
     * @param onGuiderChangedListener 可以传入OnGuiderChangedListener和OnGuiderListener的子类
     */
    public void setOnGuiderChangedListener(OnGuiderChangedListener onGuiderChangedListener){
        mMask.setOnGuiderChangedListener(onGuiderChangedListener);
    }

    /**
     * 设置状态所有回调
     * @param onGuiderListener 可以传入OnGuiderListener的子类
     */
    public void setOnGuiderListener(OnGuiderListener onGuiderListener){
        mMask.setOnGuiderListener(onGuiderListener);
    }
Clone this wiki locally