autojs悬浮窗模拟toast气泡,放

牙叔教程简单易懂

效果

这个蓝色的气泡实际上是一个悬浮窗,他的位置在屏幕底部;

这个是小米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文档,最后才是群里问问---牙叔教程

声明

部分内容来自网络本教程仅用于学习,禁止用于其他用途




转载请注明:http://www.aierlanlan.com/grrz/1915.html

  • 上一篇文章:
  •   
  • 下一篇文章: