大家好,我是公众号3分钟学堂的郭立员
前言
一般软件在有新版本更新的时候会有一个弹窗提示,我们这期教程是给脚本增加一个类似的提示。
制作过程
①、准备一个背景图
②、新建一个悬浮窗,并把准备图片作为悬浮窗的背景图。
FW.NewFWindow("悬浮窗",120,300,480,640)
FW.SetPicture("悬浮窗", "/sdcard/pictures/更新提示/bg.jpg")
FW.Show("悬浮窗")
do
Delay 1000
Loop
③、给悬浮窗增加文字
这个文字主要是脚本更新的内容,新版本脚本更新了什么,这里就写什么,当然也可以加一些别的,比如版本号、新版本文件大小。
考虑到悬浮窗自适应大小比较麻烦,所以更新的文字尽量不要太多,防止超过悬浮窗的范围而被隐藏。
FW.NewFWindow("悬浮窗",120,300,480,640)
FW.SetPicture "悬浮窗", "/sdcard/pictures/更新提示/bg.jpg"
FW.AddTextView("悬浮窗", "更新标题", "是否升级V3.1版本?", 50, 260, 400, 100)
FW.AddTextView("悬浮窗", "更新内容", "1.增加了跑图功能\n\n2.修复了界面配置加载错误\n\n3.修复未知错误", 50, 330, 400, 300)
FW.SetTextSize("更新内容", 12)
FW.SetTextColor("更新内容","333333")
FW.Show("悬浮窗")
Do
Delay 1000
Loop
为了好看增加了一些细节,比如换行是用\n,但是间距太小,代码里面没有行间距命令,所以使用两个\n用多一个空行增加了行间距。
另外文字颜色也做了区分,使用了灰色,增强主次关系。
④、增加按钮
需要在悬浮窗上加两个按钮,一个是“取消”,一个是“立即更新”。
“取消”按钮为灰色,“立即更新”按钮为彩色,字体颜色为白色,这里调整按钮的大小和位置使整体看着和谐一些。
FW.NewFWindow("悬浮窗",120,300,480,640)
FW.SetPicture "悬浮窗", "/sdcard/pictures/更新提示/bg.jpg"
FW.AddTextView("悬浮窗", "更新标题", "是否升级V3.1版本?", 50, 260, 400, 100)
FW.AddTextView("悬浮窗", "更新内容", "1.增加了跑图功能\n\n2.修复了界面配置加载错误\n\n3.修复未知错误", 50, 330, 400, 300)
FW.SetTextSize("更新内容", 12)
FW.SetTextColor("更新内容","333333")
FW.AddButton("悬浮窗", "取消", "取消", 50, 530, 180, 60)
FW.AddButton "悬浮窗", "立即更新", "立即更新", 255, 530, 180, 60
FW.SetBackColor("取消","aaaaaa")
FW.SetBackColor("立即更新","E29F07")
FW.SetTextColor "取消", "FFFFFF"
FW.SetTextColor("立即更新","FFFFFF")
FW.Show("悬浮窗")
Do
Delay 1000
Loop
⑤、设置按钮功能
悬浮窗的样子弄好之后,就要开始做功能了。
取消更新:
FW.SetOnClick("取消", 取消更新)
FW.Show("悬浮窗")
Do
Delay 1000
Dim ret = FW.GetValue("悬浮窗")
If ret["Left"] Then
Else
Exit Do
End If
Loop
TracePrint 1
Function 取消更新()
FW.Close ("悬浮窗")
End Function
给“取消”按钮增加了一个点击事件,点击按钮后关闭悬浮窗,正常来说到这一步悬浮窗就消失了,但是对于代码来说还有一个死循环(do循环)
如果想要脚本继续运行,就需要结束do循环,这里在do循环里面加上一个获取悬浮窗是否存在的判断,当悬浮窗关闭后,跳出do循环。
立即更新:
这个其实和“取消”按钮是一样的,也是点击后关闭悬浮窗并且结束do循环。
不同之处是需要加上你更新脚本的操作,而且需要在更新脚本结束之后在关闭悬浮窗。
以下是完整代码:
FW.NewFWindow("悬浮窗",120,300,480,640)
FW.SetPicture "悬浮窗", "/sdcard/pictures/更新提示/bg.jpg"
FW.AddTextView("悬浮窗", "更新标题", "是否升级V3.1版本?", 50, 260, 400, 100)
FW.AddTextView("悬浮窗", "更新内容", "1.增加了跑图功能\n\n2.修复了界面配置加载错误\n\n3.修复未知错误", 50, 330, 400, 300)
FW.SetTextSize("更新内容", 12)
FW.SetTextColor("更新内容","333333")
FW.AddButton("悬浮窗", "取消", "取消", 50, 530, 180, 60)
FW.AddButton "悬浮窗", "立即更新", "立即更新", 255, 530, 180, 60
FW.SetBackColor("取消","aaaaaa")
FW.SetBackColor("立即更新","E29F07")
FW.SetTextColor "取消", "FFFFFF"
FW.SetTextColor "立即更新", "FFFFFF"
FW.SetOnClick "取消", 取消更新
FW.SetOnClick("立即更新", 立即更新)
FW.Show("悬浮窗")
Do
Delay 1000
Dim ret = FW.GetValue("悬浮窗")
If ret["Left"] Then
Else
Exit Do
End If
Loop
Function 取消更新()
FW.Close ("悬浮窗")
End Function
Function 立即更新()
For i = 1 To 100
ShowMessage "开始更新脚本" & 100 - i
delay 1000
Next
FW.Close ("悬浮窗")
End Function
⑥、细节补充
给整个悬浮窗加上圆角,原本想直接用倒角命令,由于加了背景图使得此命令失效,只能是做一个带圆角的背景图。
在点击完“立即更新”按钮后,悬浮窗不是立即消失,而是要等待脚本更新完成,这段时间为了防止按钮被再次点击,可以设置成按钮禁止点击。
更新过程如果需要时间较长,可以用进度条显示,减少用户的焦虑感。