顧名思義,EasyGuideLayer
是用於進行Android頁面蒙層引導
的組件。java
CODE:android
// 建立引導層展現item
val item = GuideItem.newInstance(findViewById<View>(R.id.layer_layout))
// 引導view的相對位置
.setGravity(Gravity.BOTTOM)
// 用於建立引導View的layout佈局,此處爲普通的TextView
.setLayout(R.layout.guide_text_layout)
// 設置展現的高亮塊形狀:橢圓形
.setHighLightShape(GuideItem.SHAPE_OVAL)
// 此處進行引導View的時間、內容顯示控制。好比此處修改TextView的顯示內容
.setOnViewAttachedListener { view, controller ->
(view as TextView).text = "此處展現下方的各類蒙層展現效果"
}
EasyGuideLayer.with(activity) // 使用activity實例進行建立。
.addItem(item) // 將引導層添加進來
.setDismissOnClickOutside(true)// 點擊外部區域時自動隱藏
.show()
複製代碼
效果圖:git
CODE:github
// 提供統一的蒙層實例建立使用
private fun createDefaultGuide() =
EasyGuideLayer.with(anchor)// 指定用於建立蒙層的View
.setBackgroundColor(0x33000000)
.setOnGuideShownListener { shown:Boolean ->
EasyToast.DEFAULT.show("蒙層已${if (shown) "展現" else "消失"}")
}.setDismissOnClickOutside(true)
...
// 直接建立不添加引導View進行展現
createDefaultGuide().show()
複製代碼
效果圖:canvas
CODE:bash
// 建立位置-文案關係列表。
private val gravities = listOf(
Gravity.LEFT or Gravity.TOP to "左上",
Gravity.TOP to "頂部",
Gravity.RIGHT or Gravity.TOP to "右上",
Gravity.LEFT to "左邊",
Gravity.RIGHT to "右邊",
Gravity.LEFT or Gravity.BOTTOM to "左下",
Gravity.BOTTOM to "底部",
Gravity.BOTTOM or Gravity.RIGHT to "右下"
)
fun showWithGravity() {
var index = 0
val item = GuideItem.newInstance(findViewById<View>(R.id.anchor_center))
// 設置gravity與通用引導View
item.setGravity(gravities[index].first).setLayout(R.layout.guide_text_layout)
item.setOnViewAttachedListener { view, controller ->
(view as TextView).text = gravities[index].second
view.setOnClickListener {
// 點擊後重置gravity信息並從新展現
try {
index++
item.setGravity(gravities[index].first)
controller.getGuideLayer().show()
} catch (e:IndexOutOfBoundsException) {
// 全部gravity效果展現完成後。讓蒙層消失
controller.dismiss()
}
}
}
createDefaultGuide()
.addItem(item)
.show()
}
複製代碼
效果圖:ide
CODE:佈局
val layer = createDefaultGuide()
// 背景色調深點便於查看高亮塊
layer.setBackgroundColor(0x66000000)
// 頂部高亮塊:使用橢圓形狀
val topItem = GuideItem.newInstance(findViewById<View>(R.id.anchor_top))
.setHighLightShape(GuideItem.SHAPE_OVAL)
.setOnHighLightClickListener { EasyToast.DEFAULT.show("頂部高亮區域被點擊") }
// 中間高亮塊:使用矩形形狀
val centerItem = GuideItem.newInstance(findViewById<View>(R.id.anchor_center))
.setHighLightShape(GuideItem.SHAPE_RECT)
.setOnHighLightClickListener { EasyToast.DEFAULT.show("中央高亮區域被點擊") }
// 底部高亮塊:使用自定義繪製,圓角矩形形狀
val bottomItem = GuideItem.newInstance(findViewById<View>(R.id.anchor_bottom))
.setOnDrawHighLightCallback { canvas, rect, paint ->
canvas.drawRoundRect(rect, 30f, 30f, paint)
}.setOnHighLightClickListener { EasyToast.DEFAULT.show("底部高亮區域被點擊") }
layer.addItem(topItem).addItem(centerItem).addItem(bottomItem).show()
複製代碼
效果圖:ui
CODE:編碼
val item = GuideItem.newInstance(findViewById<View>(R.id.anchor_center))
.setLayout(R.layout.guide_text_layout)
.setOnViewAttachedListener { view, controller ->
(view as TextView).text = "中央展現hehehehe "
}.setOffsetProvider { point, rectF, view ->
// 在此根據具體尺寸計算出中央位置
point.offset(((rectF.width() - view.width) / 2).toInt(), 0)
}.setGravity(Gravity.TOP)
createDefaultGuide().addItem(item).show()
複製代碼
效果圖:
具體用法說明請直接前往開源庫進行詳細瞭解:EasyGuideLayer
EasyGuideLayer是開源基礎組件集成庫EasyAndroid中的基礎組件之一。
EasyAndroid做爲一款集成組件庫,此庫中所集成的組件,均包含如下特色,你能夠放心使用~~
1. 設計獨立
組件間獨立存在,不相互依賴,且若只須要集成庫中的部分組件。也能夠很方便的
只copy對應的組件文件
進行使用
2. 設計輕巧
由於是組件集成庫,因此要求每一個組件的設計儘可能精練、輕巧。避免由於一個小功能而引入大量無用代碼.
每一個組件的方法數均
不超過100
. 大部分組件甚至不超過50
。
得益於編碼時的高內聚性
,若你只須要使用EasyGuideLayer. 那麼能夠直接去拷貝EasyGuideLayer源碼文件到你的項目中,直接進行使用,也是沒問題的。
EasyAndroid開源庫地址:
EasyGuideLayer組件地址: