/*
软件作者:https://xuhss.com/oxox/pro
*/
/**
* 原文链接: https://blog.csdn.net/u014452224/article/details/55193542
* 翻译: 家
* QQ: 203118908
* 功能: autojs图标和波浪同时显示
*/
var marginSize = '30'
var myMargin = marginSize + ' ' + marginSize + ' ' + marginSize + ' ' + marginSize
// <button id='button' >button</button>
bitmapWidth=666
bitmapHeight=666
window=floaty.rawWindow(
<vertical gravity='center'>
<frame margin= '{{myMargin}}' gravity='center'>
<frame w="{{bitmapWidth}}px" h="{{bitmapHeight}}px" gravity='center'>
<canvas id='board'></canvas>
</frame>
</frame>
</vertical>
)
importClass(java.io.File);
importClass(java.io.FileFilter);
importClass(android.graphics.Path);
importClass(android.graphics.RectF);
importClass(android.graphics.Rect);
importClass(android.graphics.Paint);
importClass(android.graphics.Point);
importClass(android.graphics.BitmapFactory);
importClass(android.graphics.Bitmap);
importClass(android.graphics.Matrix);
importClass(android.graphics.Color);
importClass(android.graphics.ColorMatrix);
importClass(android.graphics.ColorFilter);
importClass(android.animation.ObjectAnimator)
importClass(android.graphics.PorterDuffXfermode)
importClass(android.graphics.Xfermode)
importClass(android.graphics.PorterDuff)
var myPath = new Path();
var myPaint = new Paint();
var myMatrix = new Matrix();
var myPoint = new Point(50, 300);
myPaint.setStrokeWidth(2);
myPaint.setTextAlign(Paint.Align.CENTER);
myPaint.setColor(-28707)
// myPaint.setColor(-65536)
// myPaint.setColor(13823224)
myPaint.setStyle(Paint.Style.FILL_AND_STROKE);
// myPaint.setStyle(Paint.Style.FILL);
// myPaint.setStyle(Paint.Style.STROKE);
// var bitmap = android.graphics.Bitmap.createBitmap(bitmapWidth, bitmapHeight, android.graphics.Bitmap.Config.ARGB_8888);
// var myCanvas = new Canvas(bitmap);
view = window.board
var rect = new Rect;
view.getBoundsOnScreen(rect)
left=rect.left
top=rect.top
right=rect.right
bottom=rect.bottom
centerx = rect.centerX()
centery = rect.centerY()
ui.post(
function(){
w=view.getWidth()
h=view.getHeight()
}
)
w=0
黑洞圆的半径=50
var 半边宽度=w/2
myPath.reset();
mWaveHight = 150;//水波纹的高度
mWaveWidth = 100;//水波纹的宽度
mWaveSpeed = 10;
maxProgress = 100;
currentProgress = 0;
var currentY;
deviceHeightHalf=device.height/2
deviceWidthHalf=device.width/2
deviceWidth=device.width
deviceHeight=device.height
// 波峰加波谷算一浪
浪的个数=3
波浪宽度=bitmapWidth/浪的个数
波浪高度=100
振幅=300
左右移动的距离=0
angel=function(){
var count=0
return function(){
count++;
if(count>=360){
count=0
}
return count;
}
}()
var secondImgId = getResource('ic_android_eat_js')
log('第二种获取id的办法,能用')
log(secondImgId)
// img.setBackgroundResource(secondImgId);
myDrawableBitmap=context.getResources().getDrawable(secondImgId).bitmap // Drawable
mSrcRect = new Rect(0, 0, bitmapWidth, bitmapHeight);
mDestRect = new Rect(0, 0, bitmapWidth, bitmapHeight);
// 按照比例缩放图片
// 首先得到原bitmap 宽高
myDrawableBitmap原来的width = myDrawableBitmap.getWidth();
heimyDrawableBitmap原来的height = myDrawableBitmap.getHeight();
// 得到新的宽高与原宽高的比例
scaleWidth = (bitmapWidth)/myDrawableBitmap原来的width;
scaleHeight = (bitmapHeight)/heimyDrawableBitmap原来的height;
// 使用 Matrix 类
matrix = new Matrix();
matrix.postScale(scaleWidth,scaleHeight);
// 生成新的Bitmap
myDrawableBitmap = Bitmap.createBitmap(myDrawableBitmap,0,0,myDrawableBitmap原来的width,heimyDrawableBitmap原来的height,matrix,false);
window.board.on("draw", function (canvas) {
distance=Math.sin(angel()*0.017453293)*振幅
canvas.drawARGB(255, 127, 127, 127);
// xfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN);
xfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN);
myPaint.setXfermode(xfermode);
canvas.drawBitmap(myDrawableBitmap, mSrcRect, mDestRect, myPaint);
myPath.reset();
第一个点={
x:0-左右移动的距离,
y:bitmapHeight/2+distance
}
myPath.moveTo(第一个点.x,第一个点.y);
for(var i=0;i<浪的个数*2;i++){
// 第一个波峰
控制点坐标={
x:波浪宽度*(1/4+i)-左右移动的距离,
y:bitmapHeight/2-波浪高度+distance
}
终点坐标={
x:波浪宽度*(1/4*2+i)-左右移动的距离,
y:bitmapHeight/2+distance
}
myPath.quadTo(控制点坐标.x,控制点坐标.y,终点坐标.x,终点坐标.y);
// 第一个波谷
控制点坐标={
x:波浪宽度*(1/4*3+i)-左右移动的距离,
y:bitmapHeight/2+波浪高度+distance
}
终点坐标={
x:波浪宽度*(1/4*4+i)-左右移动的距离,
y:bitmapHeight/2+distance
}
myPath.quadTo(控制点坐标.x,控制点坐标.y,终点坐标.x,终点坐标.y);
}
myPath.lineTo(bitmapWidth,bitmapHeight);
myPath.lineTo(0,bitmapHeight);
myPath.close();
canvas.drawPath(myPath, myPaint);
myPaint.setXfermode(null);
// canvas.drawBitmap (myDrawableBitmap, 0,0, myPaint )
左右移动的距离 +=mWaveSpeed;
左右移动的距离 = 左右移动的距离%(bitmapWidth);
// log(左右移动的距离)
});
function getResource(imageName) {
var resId = context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
return resId;
}
window.setPosition(device.width/8,device.height/3)
setInterval(()=>{},3000)
[虚幻私塾】
- 粉丝: 337
- 资源: 1558
最新资源
- 手机数据恢复技术及其商业运作模式探析
- 大模型安全实践(2024)
- dotnet-csharp.pdf
- 副业创收策略:高性价比内存卡销售及市场定位分析
- dotnet-csharp-language-reference.pdf
- dotnet-csharp-specification.pdf
- 副业指南之本地流量变现方案:针对宝妈群体的社区团购运营策略
- 负债人群零成本抖音快手知识传播创富指南
- 2021mathorcup数学建模A题论文(后附代码).docx
- 基于SEO优化的高收益写真站点搭建与运营指南
- 基于MATLAB m编程的发动机最优工作曲线计算程序(OOL),在此工作曲线下,发动机燃油消耗最小 hot 文件内含:1、发动机最优工作曲线计算程序m文件;2、发动机万有特性数据excel文件
- 基于Yunzai机器人框架的群互动插件 Gi-plugin 设计源码
- ziyuanaaaaaaaaaa
- 基于Vue框架的JavaScript、TypeScript、CSS网络货运平台移动端小程序设计源码
- 基于HTML、TypeScript、JavaScript的全面运动健康手环App设计源码
- 抖音平台明星周边产品营销策略与获利方法探讨
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈