NoviceGuide
Android无侵入式引导提示 【博客地址:https://www.jianshu.com/p/94b73f314ab8】
Install / Use
/learn @zhangjianhd/NoviceGuideREADME
Android无侵入式引导提示-NoviceGuide
优点
代码无侵入式,不需要处理原来的布局以及逻辑,只要在需要显示的地方像显示一个dialog一样配置好然后调用show方法即可
依赖方法
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.zhangjianhd:NoviceGuide:1.0.1'
}
api
| NoviceGuide.Builder的api | 方法说明 | | ------------------------------------------------------------ | :----------------------------------------------------------- | | focusView | 出现引导高亮显示的View(一般是引导描述的按钮等) | | setPadding | 设置高亮区域在View周边padding | | setRadius | 设置高亮部分的圆角(默认0,就是矩形),当设置超过View半径就会是圆(类比drawable的Radius) | | setRelyActivity | 当前引导所依附的Activity(因为原理是拿到Activity的android.R.id.content。所以目前只支持对属于Activity的View做处理,这也是后期优化点) | | setLayout(int layout,DecorateInflate decorateInflate) | 设置引导显示提示的布局,内部处理好inflate的过程,同时提供DecorateInflate回调装饰inflate后的View,不需要可以传null | | setPassId | 设置上方法提供的不居中“跳过”的按钮id,可不设置,不设置的时候需要自己在DecorateInflate回调中自己处理好调用dismiss()的逻辑。注意:在使用NoviceGuideSet构建一条链的引导时,请设置该方法,交给NoviceGuideSet内部自己去处理链的跳转步骤 | | build | 返回NoviceGuide对象 |
| NoviceGuide | 方法说明 | | ----------- | ---------------------------------------------- | | show | 将设置好的NoviceGuide显示出来 | | dismiss | 关闭引导,一般情况无需使用者调用,由内部处理好 |
| NoviceGuideSet | 方法说明 | | --------------------------------- | ------------------------------------------ | | addGuide(NoviceGuide NoviceGuide) | 添加引导链其中的一个步骤 | | show | 显示引导,点击PassView后按添加顺序依次展示 |
范例
创建一个引导:
new NoviceGuide.Builder(MainActivity.this)
.focusView(binding.btnGuide)
.setRadius(1000) //显示出圆形
.setRelyActivity(MainActivity.this)
.setLayout(R.layout.layout_btn_guide, new DecorateInflate() {
@Override
public void onInflate(final NoviceGuide noviceGuide, View inflaterView) {
inflaterView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
noviceGuide.dismiss();
}
});
}
})
.build()
.show();
如果是一系列的步骤引导,你可以使用NoviceGuideSet
NoviceGuide noviceGuide1 = new NoviceGuide.Builder(MainActivity.this)
.focusView(binding.tvBtn1)
.setPadding(5, 5, 5, 5)
.setRadius(15)
.setRelyActivity(MainActivity.this)
.setLayout(R.layout.layout_guide, null)
.setPassId(R.id.iv_know)
.build();
NoviceGuide noviceGuide2 = new NoviceGuide.Builder(MainActivity.this)
.focusView(binding.tvBtn2)
.setPadding(5, 5, 5, 5)
.setRadius(15)
.setRelyActivity(MainActivity.this)
.setLayout(R.layout.layout_guide, null)
.setPassId(R.id.iv_know)
.build();
NoviceGuideSet noviceGuideSet = new NoviceGuideSet();
noviceGuideSet.addGuide(noviceGuide1);
noviceGuideSet.addGuide(noviceGuide1);
noviceGuideSet.show();
效果

Related Skills
node-connect
347.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
