天天看點

[Android]新功能引導高亮顯示遮罩層View[Android]新功能引導高亮顯示遮罩層View

[Android]新功能引導高亮顯示遮罩層View

@Author GQ 年月日   

實際上是一個Activity遮蓋在目标View的上方,
可以設定遮罩層文字圖檔等,親測好使。
           

原文github位址

效果圖

[Android]新功能引導高亮顯示遮罩層View[Android]新功能引導高亮顯示遮罩層View
  • Android新功能引導高亮顯示遮罩層View
    • 效果圖
    • AndroidStudio使用
    • 使用

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()
    //設定遮罩透明度(0-255)
    .setAlpha()
    //設定遮罩形狀 預設矩形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();
        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 ;
    }

    @Override
    public int getYOffset() {
        return ;
    }
}