[Android]新功能引导高亮显示遮罩层View

[Android]新功能引导高亮显示遮罩层View

@Author GQ 2016085日   

实际上是一个Activity遮盖在目标View的上方,
可以设置遮罩层文字图片等,亲测好使。

原文github地址

效果图

这里写图片描述

1. AndroidStudio使用

dependencies {

    compile 'com.guoqi.widget:highlightview:1.0'

}

2. 使用

//在fab上使用线程加载
fab.post(new Runnable() {
            @Override
            public void run() {
                showHighLight(fab);
            }
        });


/**
 * 显示高亮引导
 */
private void showHighLight(final View v) {
  final GuideBuilder builder = new GuideBuilder();
  builder.
    //设置要高亮显示的View
    setTargetView(v)
    //设置高亮区域圆角
    .setHighTargetCorner(10)
    //设置遮罩透明度(0-255)
    .setAlpha(150)
    //设置遮罩形状 默认矩形Component.ROUNDRECT,可选圆形
    .setHighTargetGraphStyle(Component.ROUNDRECT)
    //是否覆盖目标View,默认flase
    .setOverlayTarget(false)
    //设置进出动画
    .setEnterAnimationId(android.R.anim.fade_in)
    .setExitAnimationId(android.R.anim.fade_out)
    //外部是否可点击取消遮罩,true为不可取消
    .setOutsideTouchable(false);
  //设置遮罩监听
  builder.setOnVisibilityChangedListener(new      GuideBuilder.OnVisibilityChangedListener() {
            @Override
            public void onShown() {
                //显示遮罩时触发
            }

            @Override
            public void onDismiss() {
                //显示下一个遮罩
                showHightLight2(iv);
            }
        });

        //添加遮罩旁边需要显示的视图,比如 "新功能在这里~"
        builder.addComponent(new MyComponent());
        Guide guide = builder.createGuide();
        //检测定位非0
        guide.setShouldCheckLocInWindow(false);
        //显示
        guide.show(this);
    }
  • MyComponent.java
//自定义遮罩层文字图片
public class MyComponent implements Component {

    @Override
    public View getView(LayoutInflater inflater) {
        LinearLayout ll = new LinearLayout(inflater.getContext());
        LinearLayout.LayoutParams param =
                new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setLayoutParams(param);
        TextView textView = new TextView(inflater.getContext());
        textView.setText("点击这里");
        textView.setTextColor(Color.WHITE);
        textView.setTextSize(20);
        ImageView imageView = new ImageView(inflater.getContext());
        imageView.setImageResource(R.drawable.arrow);
        ll.removeAllViews();
        ll.addView(textView);
        ll.addView(imageView);
        ll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(view.getContext(), "引导层被点击了", Toast.LENGTH_SHORT).show();
            }
        });
        return ll;
    }

    @Override
    public int getAnchor() {
        return Component.ANCHOR_BOTTOM;
    }

    @Override
    public int getFitPosition() {
        return Component.FIT_START;
    }

    @Override
    public int getXOffset() {
        return 0;
    }

    @Override
    public int getYOffset() {
        return 30;
    }
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值