1. 程式人生 > >首次啟動APP的新功能指引蒙板的使用

首次啟動APP的新功能指引蒙板的使用

一般來說很多APP在第一次安裝啟動後都會有個新手引導的過程,不過每家採用的方式不同。最近做到這塊內容我就不再造輪子【其實是自己造不出來…】找到一個比較美觀的新手引導層框架。

TourGuide介紹

一個關於新手引導層的框架,介面較為美觀,自定義屬性也比較好。
TourGuide框架

使用

在build.gradle匯入框架


repositories {
    mavenCentral()
    maven(){
        url "https://oss.sonatype.org/content/repositories/snapshots"
    }
}
compile ('com.github.worker8:tourguide:
[email protected]
'
){ 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下的最後一行刪掉同步即可。