欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

超好用的Android高亮引導(dǎo)庫的使用

 更新時(shí)間:2021年04月22日 11:43:46   作者:OyeAndroid  
這篇文章主要介紹了超好用的Android高亮引導(dǎo)庫的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡(jiǎn)介

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

功能:

  • 可一次顯示一個(gè)或多個(gè)高亮view
  • 通過水平約束和豎直約束來準(zhǔn)確定位提示view
  • 自定義提示view的出現(xiàn)動(dòng)畫
  • 自定義高亮形狀和大小
  • 自定義高亮形狀的paint
  • 鏈?zhǔn)秸{(diào)用,使用簡(jiǎn)單
  • 支持簡(jiǎn)單的pop window

效果圖:

highlight_pro_cn.gif

highlight_pro_popup_cn.gif

highlight_recycler_view_cn.gif

用法:

Gradle

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

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

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

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

代碼

我們可以通過Activity Fragment ViewGroup其中一個(gè)拿到HighlightPro對(duì)象:

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

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

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

簡(jiǎn)單的完整鏈?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()

如果你想一次展示多個(gè)高亮view可以看如下代碼(區(qū)別是傳入的是一個(gè)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 就代表了不會(huì)高亮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)//攔截返回鍵,返回鍵會(huì)導(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 返回一個(gè) HighlightParameter 對(duì)象

注意

  • setHighlightViewId & setHighlightView
  • setTipsViewId & setTipsView

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

關(guān)于 HighlightShape

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

注意

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

關(guān)于 Constraints

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

Vertical Constraints 屬性描述
TopToTopOfHighlight 將提示view頂部和高亮矩形頂部對(duì)齊
TopToBottomOfHighlight 將提示view頂部和高亮矩形底部對(duì)齊
BottomToBottomOfHighlight 將提示view底部和高亮矩形底部對(duì)齊
BottomToTopOfHighlight 將提示view底部和高亮矩形頂部對(duì)齊

Horizontal Constraint 屬性描述
StartToStartOfHighlight 將提示view左側(cè)和高亮矩形左側(cè)對(duì)齊
StartToEndOfHighlight 將提示view左側(cè)和高亮矩形右側(cè)對(duì)齊
EndToEndOfHighlight 將提示view右側(cè)和高亮矩形右側(cè)對(duì)齊
EndToStartOfHighlight 將提示view右側(cè)和高亮矩形左側(cè)對(duì)齊

注意

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

Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight

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

setMarginOffset(MarginOffset(start = 8.dp))

最后

上面我們基本把HighlightPro的用法介紹完了,歡迎大家使用,如果它對(duì)您有幫助,記得給個(gè)star哦。如果使用過程有啥bug,歡迎提Issues,我會(huì)及時(shí)跟進(jìn)的。

到此這篇關(guān)于超好用的Android高亮引導(dǎo)庫的使用的文章就介紹到這了,更多相關(guān)Android高亮引導(dǎo)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • RecyclerView滑動(dòng)到指定Position的方法

    RecyclerView滑動(dòng)到指定Position的方法

    這篇文章主要為大家詳細(xì)介紹了RecyclerView滑動(dòng)到指定Position的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • okhttp3.4.1+retrofit2.1.0實(shí)現(xiàn)離線緩存的示例

    okhttp3.4.1+retrofit2.1.0實(shí)現(xiàn)離線緩存的示例

    本篇文章主要介紹了okhttp3.4.1+retrofit2.1.0實(shí)現(xiàn)離線緩存的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Android自定義控件實(shí)現(xiàn)雷達(dá)圖效果

    Android自定義控件實(shí)現(xiàn)雷達(dá)圖效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)雷達(dá)圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 淺析Android 模擬鍵盤鼠標(biāo)事件

    淺析Android 模擬鍵盤鼠標(biāo)事件

    本篇文章是對(duì)Android模擬鍵盤鼠標(biāo)事件進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android?WebRTC?對(duì)?AudioRecord?的使用技術(shù)分享

    Android?WebRTC?對(duì)?AudioRecord?的使用技術(shù)分享

    這篇文章主要介紹了Android?WebRTC?對(duì)?AudioRecord?的使用技術(shù)分享,AudioRecord?是?Android?基于原始PCM音頻數(shù)據(jù)錄制的類,接下來和小編進(jìn)入文章了解更詳細(xì)的內(nèi)容吧
    2022-02-02
  • Android實(shí)現(xiàn)淘寶選中商品尺寸的按鈕組實(shí)例

    Android實(shí)現(xiàn)淘寶選中商品尺寸的按鈕組實(shí)例

    這篇文章介紹的是仿淘寶中的選中商品不同尺寸,比如衣服有L、M、XL等等的款式。這時(shí)候我們就需要一個(gè)button組來進(jìn)行了,當(dāng)時(shí)這個(gè)時(shí)候里面的尺寸可能有很多,那怎么辦呢?這里我們就肯定要做個(gè)自適應(yīng)的按鈕組了,要不然弄出來也沒用。
    2016-08-08
  • flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫

    flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了flutter PositionedTransition實(shí)現(xiàn)縮放動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • camera錄制視頻的縮略圖獲取原理心得分享

    camera錄制視頻的縮略圖獲取原理心得分享

    camera錄制的視頻的縮略圖如何獲取,想必有很多的朋友都不會(huì)吧,下面與大家分享下獲取的原理,感興趣的你可不要錯(cuò)過了哈
    2013-06-06
  • Flutter路由傳遞參數(shù)及解析實(shí)現(xiàn)

    Flutter路由傳遞參數(shù)及解析實(shí)現(xiàn)

    這篇文章介紹了Flutter路由傳遞參數(shù)及解析實(shí)現(xiàn)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Android 勇闖高階性能優(yōu)化之啟動(dòng)優(yōu)化篇

    Android 勇闖高階性能優(yōu)化之啟動(dòng)優(yōu)化篇

    在移動(dòng)端程序中,用戶希望的是應(yīng)用能夠快速打開。啟動(dòng)時(shí)間過長(zhǎng)的應(yīng)用不能滿足這個(gè)期望,并且可能會(huì)令用戶失望。輕則鄙視你,重則直接卸載你的應(yīng)用
    2021-10-10

最新評(píng)論