一般来说很多APP在第一次安装启动后都会有个新手引导的过程,不过每家采用的方式不同。最近做到这块内容我就不再造轮子【其实是自己造不出来…】找到一个比较美观的新手引导层框架。
TourGuide介绍
一个关于新手引导层的框架,界面较为美观,自定义属性也比较好。
TourGuide框架
使用
在build.gradle导入框架
repositories {
mavenCentral()
maven(){
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
compile ('com.github.worker8:tourguide:1.0.17-SNAPSHOT@aar'){
transitive=true
}
老规矩缺哪儿补哪儿
至于多种效果我就不再一一展示,这里只上我的Demo演示。
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btnMain"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="BUTTON" />
</LinearLayout>
一个button放在左上角
MainActivity
public class MainActivity extends AppCompatActivity {
private Button btnMain;
private TourGuide tourGuide;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
btnMain = (Button) findViewById(R.id.btnMain);
tourGuide = TourGuide.init(this).with(TourGuide.Technique.HorizontalRight);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
btnMain.post(new Runnable() {
@Override
public void run() {
initBtnGuide(tourGuide);//放在异步线程确保能获取到view的宽高
}
});
}
/**
* 初始化指导蒙层
*
* @param tourGuide TourGuide框架遮盖层
*/
private void initBtnGuide(TourGuide tourGuide) {
tourGuide.setToolTip(
new ToolTip()
.setShadow(true)
.setBackgroundColor(getResources().getColor(R.color.DodgerBlue))
.setDescription("click here to open the menu")
.setGravity(Gravity.RIGHT)
);
tourGuide.setOverlay(new Overlay().setStyle(Overlay.Style.Circle).setHoleRadius(btnMain.getWidth() / 2 + 50));
tourGuide.playOn(btnMain);
}
}
使用起来很简单一步到位,其中要注意的是我这里是针对View获取宽度并且留了一定的间隔。如果不知道为啥这么写的,自行百度获取View的宽高。
其他
官方的依赖是有bug的,不能改变tip的文字颜色,如果对此属性有需求的可以自行打包module自己修改,很简单这里不再赘述。
官方demo如果打不开的,就吧build.gradle下的最后一行删掉同步即可。