首次启动APP的新功能指引蒙板的使用

一般来说很多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下的最后一行删掉同步即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值