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,
由于上一次的是隐藏了 所以上一次设置的还在必须再调

 
  
resert() 记住一定要调用此方法 不然会报错!!!!
    如果设置了多步提示的话 可以调用接口来监听 这样就可以在设置下一步需要修改的样式了:
 
  
 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() {

            }
        });
在布局文件中话 有以下属性:
 
  



    

        
            
            
            
        
        
            
            
        
        
        
        
        
        
        
        
        
    


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



 
  
 
  




你可能感兴趣的:(android)