溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Android中使用高亮引導(dǎo)庫

發(fā)布時間:2021-04-30 15:38:47 來源:億速云 閱讀:678 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何在Android中使用高亮引導(dǎo)庫,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Android是什么

Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。

HighlightPro 是Android的一個高亮引導(dǎo)庫,同時它還可以是一個簡單的popup window庫

功能:

  • 可一次顯示一個或多個高亮view

  • 通過水平約束和豎直約束來準(zhǔn)確定位提示view

  • 自定義提示view的出現(xiàn)動畫

  • 自定義高亮形狀和大小

  • 自定義高亮形狀的paint

  • 鏈?zhǔn)秸{(diào)用,使用簡單

  • 支持簡單的pop window

效果圖:

如何在Android中使用高亮引導(dǎo)庫

如何在Android中使用高亮引導(dǎo)庫

如何在Android中使用高亮引導(dǎo)庫

用法:

Gradle

在項(xiàng)目級的build.gradle文件種添加maven存儲倉庫Jitpack:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

添加依賴到你的app的build.gradle 文件中:

dependencies {		
	implementation 'com.github.hyy920109:GuidePro:1.0.3'
}

代碼

我們可以通過Activity Fragment ViewGroup其中一個拿到HighlightPro對象:

/**
 * 會使用activity.window.decorView 作為父view 全屏顯示
 */
fun with(activity: Activity): HighlightPro {
    return HighlightPro(activity)
}

/**
 * 會使用會使用fragment依賴的activity的activity.window.decorView 作為父view 全屏顯示
 */
fun with(fragment: Fragment): HighlightPro {
    return HighlightPro(fragment)
}

/**
 * 會使用傳進(jìn)來的viewGroup作為父view
 */
fun with(view: ViewGroup): HighlightPro {
    return HighlightPro(view)
}

簡單的完整鏈?zhǔn)秸{(diào)用

HighlightPro.with(this)
            .setHighlightParameter {
                HighlightParameter.Builder()
                    .setHighlightViewId(R.id.btn_step_first)
                    .setTipsViewId(R.layout.guide_step_first)
                    .setHighlightShape(RectShape(4f.dp, 4f.dp, 6f))
                    .setHighlightHorizontalPadding(8f.dp)
                    .setConstraints(Constraints.StartToEndOfHighlight + Constraints.TopToTopOfHighlight)
                    .setMarginOffset(MarginOffset(start = 8.dp))
                    .build()
            }
            .setBackgroundColor("#80000000".toColorInt())
            .setOnShowCallback { index ->
                //do something
            }
            .setOnDismissCallback {
                //do something
            }
            .show()

如果你想一次展示多個高亮view可以看如下代碼(區(qū)別是傳入的是一個List):

HighlightPro.with(this)
            .setHighlightParameters(
                HighlightParameter.Builder()
                    .setHighlightViewId(R.id.btn_step_first)
                    .setTipsViewId(R.layout.guide_step_first)
                    .setHighlightShape(RectShape(4f.dp, 4f.dp, 6f))
                    .setHighlightHorizontalPadding(8f.dp)
                    .setConstraints(Constraints.StartToEndOfHighlight + Constraints.TopToTopOfHighlight)
                    .setMarginOffset(MarginOffset(start = 8.dp))
                    .build()
                        +
                HighlightParameter.Builder()
                    .setHighlightViewId(R.id.btn_step_second)
                    .setTipsViewId(R.layout.guide_step_second)
                    .setHighlightShape(RectShape(4f.dp, 4f.dp, 6f))
                    .setHighlightHorizontalPadding(8f.dp)
                    .setConstraints(Constraints.StartToEndOfHighlight + Constraints.TopToTopOfHighlight)
                    .setMarginOffset(MarginOffset(start = 8.dp))
                    .build()
            )
            .setBackgroundColor("#80000000".toColorInt())
            .setOnShowCallback { index ->
                //do something
            }
            .setOnDismissCallback {
                //do something
            }
            .show()

如果我們連環(huán)展示高亮view(比如第一步、第二步。。。),可以采用多次調(diào)用setHighlightParameter, 代碼如下:

HighlightPro.with(this)
    .setHighlightParameter {
        HighlightParameter.Builder()
            .setHighlightViewId(R.id.btn_step_first)
            .setTipsViewId(R.layout.guide_step_first)
            .setHighlightShape(RectShape(4f.dp, 4f.dp, 6f))
            .setHighlightHorizontalPadding(8f.dp)
            .setConstraints(Constraints.StartToEndOfHighlight + Constraints.TopToTopOfHighlight)
            .setMarginOffset(MarginOffset(start = 8.dp))
            .build()
    }
    .setHighlightParameter {
        HighlightParameter.Builder()
            .setHighlightViewId(R.id.btn_step_second)
            .setTipsViewId(R.layout.guide_step_second)
            .setHighlightShape(CircleShape())
            .setHighlightHorizontalPadding(20f.dp)
            .setHighlightVerticalPadding(20f.dp)
            .setConstraints(Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight)
            .setMarginOffset(MarginOffset(top = 8.dp))
            .build()
    }
    .setHighlightParameter {
        HighlightParameter.Builder()
            .setHighlightViewId(R.id.btn_step_third)
            .setTipsViewId(R.layout.guide_step_third)
            .setHighlightShape(OvalShape())
            .setHighlightHorizontalPadding(12f.dp)
            .setHighlightVerticalPadding(12f.dp)
            .setConstraints(Constraints.BottomToTopOfHighlight + Constraints.EndToEndOfHighlight)
            .setMarginOffset(MarginOffset(bottom = 6.dp))
            .build()
    }
    .setBackgroundColor("#80000000".toColorInt())
    .setOnShowCallback { index ->
        //do something
    }
    .setOnDismissCallback {
        //do something
    }
    .interceptBackPressed(true)
    .show()

如果我們想現(xiàn)實(shí)pop window, 可以通過enableHighlight來控制,傳入false 就代表了不會高亮target view:

HighlightPro.with(this)
    .setHighlightParameter {
        HighlightParameter.Builder()
            .setHighlightViewId(R.id.btn_tips_bottom)
            .setTipsViewId(R.layout.pop_tips_layout_bottom)
            .setConstraints(Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight)
            .setMarginOffset(MarginOffset(end = (-2).dp))
            .build()
    }
    .enableHighlight(false)//禁用highlight
    .interceptBackPressed(true)//攔截返回鍵,返回鍵會導(dǎo)致 popwindow消失
    .show()

API 文檔

關(guān)于 HighlightParameter.Builder

方法名方法描述
setHighlightViewId設(shè)置高亮view的id
setHighlightView設(shè)置高亮view
setTipsViewId設(shè)置提示view的id
setTipsView設(shè)置提示view
setHighlightShape設(shè)置高亮形狀
setHighlightVerticalPadding設(shè)置高亮區(qū)域的豎直padding
setHighlightHorizontalPadding設(shè)置高亮區(qū)域的水平padding
setConstraints設(shè)置提示view的相關(guān)約束
setMarginOffset設(shè)置提示view的偏移量
build返回一個 HighlightParameter 對象

注意

  • setHighlightViewId & setHighlightView

  • setTipsViewId & setTipsView

對于上面兩組方法,你只需要使用每組中其中一個方法。如果都沒使用,UI 表現(xiàn)會不正常

關(guān)于 HighlightShape

HighlightShape方法描述
RectShape邊緣模糊的矩形圖形
CircleShape邊緣模糊的圓形
OvalShape邊緣模糊的橢圓形

注意

任何形狀都是基于高亮view在屏幕中的矩形區(qū)域,我們可以通過setHighlightVerticalPaddingsetHighlightHorizontalPadding來擴(kuò)大高亮區(qū)域

關(guān)于 Constraints

這個類是決定提示view位置的核心類,類似于Android自帶的約束布局,目前我們所有的約束均依賴于高亮view

Vertical Constraints屬性描述
TopToTopOfHighlight將提示view頂部和高亮矩形頂部對齊
TopToBottomOfHighlight將提示view頂部和高亮矩形底部對齊
BottomToBottomOfHighlight將提示view底部和高亮矩形底部對齊
BottomToTopOfHighlight將提示view底部和高亮矩形頂部對齊
Horizontal Constraint屬性描述
StartToStartOfHighlight將提示view左側(cè)和高亮矩形左側(cè)對齊
StartToEndOfHighlight將提示view左側(cè)和高亮矩形右側(cè)對齊
EndToEndOfHighlight將提示view右側(cè)和高亮矩形右側(cè)對齊
EndToStartOfHighlight將提示view右側(cè)和高亮矩形左側(cè)對齊

注意

通常我們就設(shè)置兩個約束:一個豎直約束,一個水平約束,而且我們可以通過運(yùn)算符重載+來構(gòu)建約束集合:

Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight

當(dāng)然我們也可以設(shè)置偏移量來調(diào)整提示view的位置:

setMarginOffset(MarginOffset(start = 8.dp))

上述就是小編為大家分享的如何在Android中使用高亮引導(dǎo)庫了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI