剑气纵横-autojs动画

简介: 剑气纵横-autojs动画

牙叔教程 简单易懂



"ui";
engines.all().map((ScriptEngine) => {
  if (engines.myEngine().toString() !== ScriptEngine.toString()) {
    ScriptEngine.forceStop();
  }
});
importClass("android.animation.ValueAnimator");
importClass("android.content.Context");
importClass("android.graphics.Matrix");
importClass("android.graphics.PorterDuffXfermode");
importClass("android.graphics.PorterDuff");
importClass("android.graphics.Color");
importClass("android.util.AttributeSet");
importClass("android.view.View");
importClass("android.view.animation.RotateAnimation");
ui.layout(
  <vertical>
    <canvas id="board"></canvas>
  </vertical>
);
// 设置画笔参数
let paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.FILL);
color = colors.parseColor("#ffffff");
paint.setColor(color);
// 设置动画参数
let anim = ValueAnimator.ofFloat(0, -360);
anim.repeatCount = android.view.animation.Animation.INFINITE;
anim.setDuration(1000);
anim.setInterpolator(null);
anim.start();
let camera = android.graphics.Camera();
let rotateMatrix = Matrix();
let xfermode = PorterDuffXfermode(PorterDuff.Mode.DST_OUT);
/* -------------------------------------------------------------------------- */
ui.post(function () {
  let width = ui.board.getWidth();
  let height = ui.board.getHeight();
  // log(width.toFloat());
  ui.board.on("draw", function (canvas) {
    canvas.drawColor(Color.BLACK);
    color = "#ff0000";
    drawSword(canvas, 35, -45, 0, width, height, color);
    color = "#00ff00";
    drawSword(canvas, 50, 10, 120, width, height, color);
    color = "#0000ff";
    drawSword(canvas, 35, 55, 240, width, height, color);
  });
});
function drawSword(canvas, rotateX, rotateY, startValue, width, height, color) {
  let colorNum = colors.parseColor(color);
  paint.setColor(colorNum);
  let layerId = canvas.saveLayer(0, 0, width, height, null, android.graphics.Canvas.ALL_SAVE_FLAG);
  rotateMatrix.reset();
  camera.save();
  /* ----------------相机旋转---------------------------------------------------------- */
  camera.rotateX(rotateX);
  camera.rotateY(rotateY);
  camera.rotateZ(anim.animatedValue + startValue);
  camera.getMatrix(rotateMatrix);
  camera.restore();
  /* -------------------------------------------------------------------------- */
  let halfW = width / 2;
  let halfH = height / 2;
  let radius = Math.min(width, height) / 4;
  rotateMatrix.preTranslate(-halfW, -halfH);
  rotateMatrix.postTranslate(halfW, halfH);
  canvas.concat(rotateMatrix);
  canvas.drawCircle(halfW, halfH, radius, paint);
  paint.xfermode = xfermode;
  canvas.drawCircle(halfW, halfH - 0.05 * radius, radius * 1.01, paint);
  canvas.restoreToCount(layerId);
  paint.xfermode = null;
}

参考

Android 炫酷自定义 View - 剑气加载


名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, 安卓文档, autojs文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

相关文章
|
1天前
|
前端开发 JavaScript C++
Marp 教程:实现幻灯片动画效果
Marp 是一个基于 Markdown 的幻灯片制作工具,结合 VSCode 的强大编辑功能,可以让你的 PPT 制作更加高效和专业。本教程详细介绍了如何在 Marp 中使用 CSS 和 JavaScript 实现幻灯片的动画效果,包括淡入、滑动、旋转等基本动画,以及交互式动画和图表动画等高级效果。通过这些技巧,你可以制作出更加生动、吸引眼球的演示文稿。
11 0
|
3月前
宇宙星星转动特效带背景音乐引导页源码
宇宙星星转动特效带背景音乐引导页源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
58 7
宇宙星星转动特效带背景音乐引导页源码
|
4月前
PPT 流星动画
PPT 流星动画
28 1
|
4月前
PPT 动画-旋转唱片
PPT 动画-旋转唱片
65 0
|
4月前
PPT 动画-文字渐入
PPT 动画-文字渐入
14 0
|
4月前
PPT 动画-树叶摆动
PPT 动画-树叶摆动
31 0
|
5月前
Flutter-自定义表情雨下落动画
Flutter-自定义表情雨下落动画
43 0
|
7月前
|
XML Java Android开发
Android App开发动画特效之实现百叶窗动画和马赛克动画效果实战演示(附源码和演示视频 可直接使用)
Android App开发动画特效之实现百叶窗动画和马赛克动画效果实战演示(附源码和演示视频 可直接使用)
323 0
|
前端开发
HTML+CSS制作七夕跳动的红心动画效果
HTML+CSS制作七夕跳动的红心动画效果
|
JSON Android开发 数据格式
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧