android 引导用户指示操作 高亮显示 可以自定义文字或者图片来作为提示,文字会自动换行

确定按钮可以设置成在屏幕中间或者在提示文字旁边都可以

如果布局文件中加入了:

android:fitsSystemWindows="true"
那要重写activity的
onWindowFocusChanged(boolean hasFocus) 方法 ;在此方法中设置要显示的高亮view
代码如下:
 @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        //动态添加布局 也可以xml文件中添加布局
        lp=new AutoRelativeLayout.LayoutParams(-1,-1);
        guideView=new UserGuideView(this);
        guideView.setLayoutParams(lp);
        rootView.addView(guideView);

        guideView.setHighLightView(tv_make);
        guideView.setText("点击“编辑”按钮可以修改视频标题以及添加广告");
        guideView.setHighLightStyle(UserGuideView.VIEWSTYLE_CIRCLE);
        guideView.setTouchOutsideDismiss(false);
        guideView.setOnNextClickListener(new UserGuideView.OnNextClickListener() {
            @Override
            public void onNextClick() {
                //改变样式
                guideView.setHighLightStyle(UserGuideView.VIEWSTYLE_RECT);
//                guideView.setMaskblurstyle(UserGuideView.MASKBLURSTYLE_NORMAL);
            }
        });
        guideView.setOnDismissListener(new UserGuideView.OnDismissListener() {
            @Override
            public void onDismiss() {

            }
        });

    }
这样就可以把指定的view高亮的显示了:使用
targetView.getGlobalVisibleRect(tagetRect);
来确定需要高亮显示的位置
 下面是一系列设置的方法,可以只提示一个 点击下一步提示多个 
 /** 设置要显示的样式*/
    public void setHighLightStyle(int highLightStyle) {
        this.highLightStyle = highLightStyle;
    }
    public void setMaskblurstyle(int maskblurstyle) {
        this.maskblurstyle = maskblurstyle;
    }

    /** 设置要显示的文字*/
    public void setText(String text) {
        this.text = text;
    }
    /** 设置要高亮的时候显示的文字数组*/
    public void setTipTextArray(String[] tipTexts){

        this.tipTexts = tipTexts;
    }
    /** 设置要点击时候的title数组*/
    public void setTextTitleArray(String[] list){

        this.list = list;
    }
    /** 清空数组 主要是用于如果单提示和多提示的转换 就需要调用此方法 否则会报错*/
     public void  resert(){
         this.list=null;
         this.tipTexts = null;
     }

    /**
     * 设置需要高亮的View
     *
     * @param targetView
     */
    public void setHighLightView(View targetView) {
        this.targetView = targetView;
        invalidate();
    }
       /**删除自己*/
    public void removeSelf(){
        ((ViewGroup)getParent()).removeView(this);
    }

    /**
     * 设置需要高亮的Views
     *
     * @param targetView
     */
    public void setHighLightView(View[] targetView) {
        this.targetView = targetView[0];
        this.views = targetView;
        invalidate();
    }

    /** 设置是否点击哪里都可以消失*/
    public void setTouchOutsideDismiss(boolean cancel) {
        this.touchOutsideCancel = cancel;
    }

    /**
     * 设置额外的边框宽度
     *
     * @param borderWidth
     */
    public void setBorderWidth(int borderWidth) {
        this.borderWitdh = borderWidth;
    }

    /**
     * 设置提示的图片
     *
     * @param bitmap
     */
    public void setTipView(Bitmap bitmap) {
        this.tipBitmap = bitmap;
    }

    /**
     * 设置提示的图片
     *
     * @param bitmap
     */
    public void setTipView(Bitmap[] bitmap) {
        this.tipBitmaps = bitmap;
    }


    /**
     * 设置蒙版颜色
     *
     * @param maskColor
     */
    public void setMaskColor(int maskColor) {
        this.maskColor = maskColor;
    }

    /**
     * 设置状态栏高度 默认是减去了一个状态栏高度 如果主题设置android:windowTranslucentStatus=true
     * 需要设置状态栏高度为0
     *
     * @param statusBarHeight
     */
    public void setStatusBarHeight(int statusBarHeight) {
        this.statusBarHeight = statusBarHeight;
    }
如果需要在提示了一次后再次提示 可以调用 setVisibility 来继续提示 然后在设置你要提示的内容以及需要高亮显示的View,
由于上一次的是隐藏了 所以上一次设置的还在必须再调

<span style="color:#ff6666;">resert() 记住一定要调用此方法 不然会报错!!!!</span>
    如果设置了多步提示的话 可以调用接口来监听 这样就可以在设置下一步需要修改的样式了:
 guideView.setOnNextClickListener(new UserGuideView.OnNextClickListener() {
            @Override
            public void onNextClick() {
                //改变样式
                guideView.setHighLightStyle(UserGuideView.VIEWSTYLE_RECT);
//                guideView.setMaskblurstyle(UserGuideView.MASKBLURSTYLE_NORMAL);
            }
        });
如果需要在指引完成后做一些事情的话 可以调用:
   guideView.setOnDismissListener(new UserGuideView.OnDismissListener() {
            @Override
            public void onDismiss() {

            }
        });
在布局文件中话 有以下属性:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="UserGuideView">
<!--显示的样式-->
        <attr name="HighlightViewStyle" format="enum">
            <enum name="rect" value="0"/>
            <enum name="circle" value="1"/>
            <enum name="oval" value="2"/>
        </attr>
        <attr name="MaskBlurStyle" format="enum">
            <enum name="solid" value="0"/>
            <enum name="normal" value="1"/>
        </attr>
        <!--提示的图片-->
        <attr name="tipView" format="reference" />
        <!--蒙版颜色-->
        <attr name="maskColor" format="reference|color" />
        <!--提示的按钮文字-->
        <attr name="textcontext" format="string"/>
        <!--提示的文字内容-->
        <attr name="tipTexts" format="string|reference"/>
    </declare-styleable>

</resources>

这里是demo地址 可以点击下载
点击打开链接






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值