牙叔教程简单易懂
效果
这个蓝色的气泡实际上是一个悬浮窗,他的位置在屏幕底部;
这个是小米MIUI,底部有三大金刚(最近,桌面,返回),悬浮窗的位置在三大金刚的上层
为什么不直接用toast呢?
因为toast在autojs的界面上可以显示,在非auotjs界面他就显示不了了,至少我的手机是这样的;
而悬浮窗基本可以显示在任何界面之上,所以就用悬浮窗模拟一下toast
目标
悬浮窗模拟的toast放到屏幕底部居中
接口
既然是模拟toast,那么接口就应该也类似toast,因此,我们的调用方式大概是这样的
letfloatyToast=require("./floatyToast.js");floatyToast.toast("牙叔教程");
悬浮窗动作划分
初始化悬浮窗
显示悬浮窗
隐藏悬浮窗
计时(因为toast默认2秒)
修改文字
初始化悬浮窗
这里主要分两个步骤
调整气泡样式
透明度
调整气泡样式
基础样式:字体大小,字体颜色,内边距
letw=floaty.rawWindow(texttextSize="30sp"w="wrap_content"h="wrap_content"textColor="#ffffff"padding="6"/text);
圆角样式,圆角矩形气泡
setBackgroundRoundRounded(w.content,colors.parseColor("#3f51b5"));functionsetBackgroundRoundRounded(view,color){letgradientDrawable=newGradientDrawable();gradientDrawable.setShape(GradientDrawable.RECTANGLE);gradientDrawable.setColor(color);gradientDrawable.setCornerRadius(60);view.setBackgroundDrawable(gradientDrawable);}
透明度
一开始,用户肯定没有调用气泡,因此他不应该被用户看见,
我们加个透明度,用户就看不见啦
letw=floaty.rawWindow(textalpha="0"/text);
显示悬浮窗
首先,气泡要显示文字,第一步就是修改文字内容
w.content.setText(msg);
修改文字内容之后,悬浮窗的宽高会发生变化,因为宽高是随文字内容而定的
letw=floaty.rawWindow(textw="wrap_content"h="wrap_content"/text);
既然一会要居中,我们就要计算一下,悬浮窗的左上角的坐标,
这个需要考虑设备的宽高和悬浮窗的宽高
letww=w.getWidth();letwh=w.getHeight();letdw=device.width;letdh=device.height;//悬浮窗置于底部中央letx=(dw-ww)/2;lety=dh-wh;w.setPosition(x,y);
修改文字之后,悬浮窗的宽高不一定会立马改变,追求稳妥的话,可以延迟ms再获取悬浮窗的宽高
ui.post(function(){...},);
最后,我们要把透明度改成1,悬浮窗就能看见啦
w.content.attr("alpha",1);
隐藏悬浮窗
悬浮窗隐藏,有两种办法,
移动到屏幕之外
修改透明度
两种都可以使用,我们随便选一种,比如移动到屏幕之外
w.setPosition(-,-);
计时(因为toast默认2秒)
计时,这个动作应该从气泡刚显示就开始计时,
同时,考虑到可能气泡上的文字,有可能频繁变化,比如ms就变一次文字,
文字变化之后,我们应该重新计时
constSHOW_DURATION=0;letfloatyToastTimer=null;functionfloatyToast(msg){if(floatyToastTimer){clearTimeout(floatyToastTimer);}ui.run(function(){w.content.setText(msg);});floatyToastTimer=setTimeout(()={hide();},SHOW_DURATION);}
修改文字
w.content.setText("牙叔教程");
环境
手机:小米11proMIUI:13.0.12Android版本:12Autojs版本:9.1.22
名人名言
思路是最重要的,其他的百度,bing,stackoverflow,github,安卓文档,autojs文档,最后才是群里问问---牙叔教程
声明
部分内容来自网络本教程仅用于学习,禁止用于其他用途