武汉加油,中国加油
今天是很多公司上班的第一天,不过由于疫情的影响,我们现在还是选择了在家办公,当然更新也应该开始了,这一篇是年前就写好的文章,算是存货了,过年期间大部分时间还是呆在家里的,最近也是在研究NanoMsg,所以下面的几篇会是NanoMsg相关的东西,等这个系列完成后,我就开始要研究一下微信小程序的相关东西。开始前还是希望这次的疫情尽快过去,武汉加油,中国加油!
学更好的别人,
做更好的自己。
——《微卡智享》
本文长度为2370字,预计阅读6分钟
TagTarget框架
最近一直在研究一些Android的开源框架,想用的几个差不多也已经会了,就随便搜了搜有没有比较喜欢的,也是无意间看到了这个引导框架,然后做了做Demo,感觉效果超好,是一个很不错的引导框架,在程序内部做使用说明非常适合。
实现效果
核心方法
微卡智享
TagTarget实现在也是流式的代码风格,可以一行代码直接实现我们想要的效果
TapTargetView.showFor(activity,
TapTarget.forView(view,title,desc))
showFor后面填入当前打开的activity,在forView中第一个参数就是我们的组件,第二个参数输入标题,第三个参数输入说明。
扩展方法
private fun tvshowTapTarget() {
TapTargetView.showFor(
this, //当前的activity
TapTarget.forView(tvshow, "这里输入标题", "这里输入说明")
//外圈圆的颜色
.outerCircleColor(R.color.colorDefBlue)
//外圈圆的透明度
.outerCircleAlpha(0.9f)
//当前设置控件的圆的颜色
.targetCircleColor(R.color.colorTransBlue)
//标题字体大小
.titleTextSize(20)
//说明字体大小
.descriptionTextSize(12)
//字体颜色
.textColor(R.color.colorBlack)
.textTypeface(Typeface.SANS_SERIF)
//阴影色
.dimColor(R.color.colorWhite)
//选中目标的半径范围
.targetRadius(70),
//点击目标的事件
object : TapTargetView.Listener() {
override fun onTargetClick(view: TapTargetView?) {
super.onTargetClick(view)
Toast.makeText(this@MainActivity, "我是弹窗", Toast.LENGTH_SHORT).show()
}
}
)
}
扩展方法中多了很多设置,比如标题或说明的字体,颜色等,还可以写入点击的事件方法,更多的扩展方法可以看一下TagTargetView的gitHub的地址:https://github.com/KeepSafe/TapTargetView.git
实现效果
下图是简单实现和扩展实现的一个对比效果
组合使用
TagTargetView除了上面简单的使用方法,还可以像我们初次进入软件的引导组合使用的方法,这里就用到了TapTargetSequence
private fun SequencesTap(){
val sequence= TapTargetSequence(this)
.targets(TapTarget.forView(tvshow,"左上角标题"),
TapTarget.forView(btn1,"btn1的说明","我来做说明")
.drawShadow(true).tintTarget(false)
.icon(drawable),
TapTarget.forView(edttext,"我是文本框","我来做文本框说明"),
TapTarget.forBounds(Rect(100,100,100,200),"我是一个矩 形")
.cancelable(false))
.listener(object : TapTargetSequence.Listener{
override fun onSequenceCanceled(lastTarget: TapTarget?) {
Toast.makeText(this@MainActivity,"canceled",Toast.LENGTH_SHORT).show()
}
override fun onSequenceFinish() {
Toast.makeText(this@MainActivity,"finish",Toast.LENGTH_SHORT).show()
}
override fun onSequenceStep(lastTarget: TapTarget?, targetClicked: Boolean) {
Toast.makeText(this@MainActivity,"targetclicked:"+targetClicked.toString()+" lasttarget:"+ lastTarget?.let{ it.id()},Toast.LENGTH_SHORT).show()
}
})
sequence.start()
}
最后创建好TapTargetSequence,需要使用start()的方法进行执行。
实现效果
小提示
在kotlin中可以不用再进行findviewbyid的方法实现了,只需要在代码文件中加入一句import kotlinx.android.synthetic.main.activity_main.*,即可实现代码中直接使用组件的id调用。
本项目中我们加入了
import kotlinx.android.synthetic.main.activity_main.*
没有用到findviewbyid就代码中直接可以使用tvshow即可。
源码地址
https://github.com/Vaccae/TagTargetViewDemo.git
完