先来一张效果图:

源码地址: https://github.com/MegatronKing/FunnyDraw

项目提供了绘图框架,但只实现了少部分图案,仍需广大人民群众一起拿起键盘来画画

再来几张样例(虽然图形不匹配)


使用方式

第一步:运行安装App并启动

第二步:启动server

adb shell
export CLASSPATH=/data/local/tmp/com.github.megatronking.funnydraw
exec app_process /system/bin com.github.megatronking.funnydraw.Main '$@'
复制代码

第三步:点击App中“猜画小歌测试”按钮,同意悬浮窗权限。

第四步:打开微信启动猜画小歌小程序,选择右侧列表中图案进行自动绘制。

注意事项

  • 部分手机需要在开发者模式中打开模拟点击开关,比如小米手机等。

项目参与及调试

Fork & Clone源码后,按照以下步骤添加自定义实现的Sample,然后提交Pull Request。参与越多,项目完成度将越高!

调试模拟器

每次修改代码后,在猜画小歌小程序中测试都需要重启server,为了简化此过程,可以直接在App内调试。点击首页“当前应用调试”。

编写一个简单的Sample,比如圆形

使用CircleMotionDrawer开发,定义好圆心、半径、绘制时间即可。

public class CircleSample implements Sample {@NonNull@Overridepublic MotionDrawer buildDrawer(Canvas canvas) {// 根据画布位置和尺寸,将圆置于画布中心return new CircleMotionDrawer(canvas.centerX, canvas.centerY, canvas.width / 4,DEFAULT_DURATION);}}
复制代码

编写一个复杂的Sample,比如酒杯

复杂的图案,需要组合各种MotionDrawer,可以使用MotionDrawerSet来组合。

public class WineGlassSample implements Sample {@NonNull@Overridepublic MotionDrawer buildDrawer(Canvas canvas) {// 杯口的椭圆int topOvalRadiusX = 200;int topOvalRadiusY = 100;int topOvalCenterX = canvas.centerX;int topOvalCenterY = canvas.centerY - 400;OvalMotionDrawer drawer1 = new OvalMotionDrawer(topOvalCenterX, topOvalCenterY,topOvalRadiusX, topOvalRadiusY, 0, 1000);// 杯底的椭圆int bottomOvalRadiusX = 100;int bottomOvalRadiusY = 50;int bottomOvalCenterX = canvas.centerX;int bottomOvalCenterY = canvas.centerY + 400;OvalMotionDrawer drawer2 = new OvalMotionDrawer(bottomOvalCenterX, bottomOvalCenterY,bottomOvalRadiusX, bottomOvalRadiusY, 0, 1000);// 杯身两侧的圆弧,画贝塞尔曲线int glassBottomX = canvas.centerX;int glassBottomY = canvas.centerY + 150;QuadBezierMotionDrawer drawer3 = new QuadBezierMotionDrawer(topOvalCenterX - topOvalRadiusX,topOvalCenterY, glassBottomX, glassBottomY, canvas.left, canvas.centerY, 1000);QuadBezierMotionDrawer drawer4 = new QuadBezierMotionDrawer(topOvalCenterX + topOvalRadiusX,topOvalCenterY, glassBottomX, glassBottomY, canvas.right, canvas.centerY, 1000);// 杯柄LineMotionDrawer drawer5 = new LineMotionDrawer(glassBottomX, glassBottomY,bottomOvalCenterX, bottomOvalCenterY - bottomOvalRadiusY, 500);// 按照绘制的顺序组合起来return new MotionDrawerSet(drawer1, drawer2, drawer3, drawer4, drawer5);}}复制代码

将开发好的Sample加入到浮窗列表

在assets目录的samples.xml文件中配置好sample的类路径和名称。

<?xml version="1.0" encoding="utf-8"?>
<samples package="com.github.megatronking.funnydraw.sample"><sample name="酒杯" class=".WineGlassSample"/><sample name="圆形" class=".CircleSample"/>...
</samples>
复制代码

API文档

LineMotionDrawer

绘制直线

// 从坐标(500,500)直线绘制到坐标(600, 600),绘制时间1000ms
MotionDrawer drawer = new LineMotionDrawer(500, 500, 600, 600, 1000);
复制代码

CircleMotionDrawer

绘制圆形

// 以坐标(500,500)为圆心,100为半径,按顺时针绘制,绘制时间1000ms
MotionDrawer drawer = new CircleMotionDrawer(500, 500, 100, 1000);
复制代码

OvalMotionDrawer

绘制椭圆形

// 以坐标(500,500)为圆心,100为x轴半径,50为y轴半径,按顺时针绘制,绘制时间1000ms
MotionDrawer drawer = new OvalMotionDrawer(500, 500, 100, 50, 1000);
复制代码

RectMotionDrawer

绘制矩形

// 以坐标(100,100)、(500,100)、(500,500)、(100,500)为四个矩形点,按顺时针绘制,绘制时间1000ms
Rect rect = new Rect(100, 100, 500, 500);
MotionDrawer drawer = new RectMotionDrawer(rect, 1000);
复制代码

TriangleMotionDrawer

绘制三角形

// 以坐标(100,100)、(300,100)、(200,200)为三角形顶点,按顺时针绘制,绘制时间1000ms
MotionDrawer drawer = new TriangleMotionDrawer(100, 100, 300, 100, 200, 200, 1000);
复制代码

SerialLinesMotionDrawer

绘制连续线段

Point p1 = new Point(0, 0);
Point p2 = new Point(50, 50);
Point p3 = new Point(100, 200);
Point p4 = new Point(200, 500);
// 连接多个点,按照顺序绘制,绘制时间3000ms
MotionDrawer drawer = new SerialLinesMotionDrawer(new Point[]{p1, p2, p3, p4}, 3000);
复制代码

QuadBezierMotionDrawer

绘制二阶贝塞尔曲线

// 以坐标(100,100)为曲线起点、坐标(300,300)为曲线终点、坐标(200,200)为控制点,绘制时间1000ms
MotionDrawer drawer = new QuadBezierMotionDrawer(100, 100, 300, 300, 200, 200, 1000);
复制代码

CubicBezierMotionDrawer

绘制三阶贝塞尔曲线

// 以坐标(100,100)为曲线起点、坐标(300,300)为曲线终点、坐标(200,200)和(200,250)为控制点,绘制时间1000ms
MotionDrawer drawer = new CubicBezierMotionDrawer(100, 100, 300, 300, 200, 200, 200,450, 1000);
复制代码

MotionDrawerSet

图形组合器,可以将以上的多个MotionDrawer组合成一个


【猜画小歌】辅助插件FunnyDraw江湖召集令相关推荐

  1. 猜画小歌小程序辅助工具

    一.项目简介 猜画小歌小程序辅助工具 二.实现功能 支持绘制直线 支持绘制圆形 支持绘制椭圆形 支持绘制矩形 支持绘制三角形 支持绘制连续线段 支持绘制二阶贝塞尔曲线 支持绘制三阶贝塞尔曲线 三.技术 ...

  2. 一夜刷屏的「猜画小歌」遭到反编译,内部还暗藏哪些玄机?

    Mobile First To AI First!Google 携第一款微信小程序开始在中国 AI 领域试水. 昨天,Google AI 在国内发布了一款微信游戏小程序「猜画小歌」,瞬间刷爆了朋友圈, ...

  3. 厦门日报:猜画小歌的纠错助手来自厦门

    摘要: 谷歌推出的这款AI微信小程序风靡网络,厦门市创业团队为其提供排除程序错误服务 本报讯 (记者 林露虹 实习生 刘冰莹)让人工智能猜一猜你画的是什么东西,猜出来就算过关.最近一段时间,谷歌AI的 ...

  4. AI版「按图索骥」,比猜画小歌更复杂的的AI交互游戏

    郑集杨 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你能在时间结束前根据Emoji找到你身边的物品吗?大概,像这样: 跟我玩?不不不,是你自己跟这个AI玩,找出东西然后让AI辨认它. 这并 ...

  5. “猜画小歌”的一些细节和思考

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由徐钒文 发表于云+社区专栏 Quickdraw的CNN-RNN模型 "猜画小歌"用到的quickdraw模型本质上 ...

  6. 从「猜画小歌」,谈企业的「数据困惑」该何去何从?

    「猜画小歌」坐拥5000万组大数据,你怎么看? Google很会玩. 当所有做云计算.大数据.手机的厂商在广而告之其先进的技术能力时,通常采用直白宣讲式的说教,落地的东西却很少,听多了也就是过眼烟云. ...

  7. Google猜画小歌升级:现在可以跟好友对战了

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 今天,Google开发者大会在上海举行. Google中国的一些运营和开发者负责人,上台简要介绍了目前Google的相关进展.(不少老外讲中 ...

  8. 你的灵魂画作都去哪儿了?“猜画小歌”背后的5000万组数据

    大数据文摘公众号(ID:BigDataDigest)出品 作者:魏子敏.halcyon 自从退出中国的搜索引擎市场,谷歌大概无时不刻都想"卷土重来".昨天,这家以搜索引擎著称的巨头 ...

  9. 《猜画小歌》背后趣事

    前言 这个博客是补上周的,这次就聊一聊轻松的话题.要问这几天哪个游戏最火爆,非<猜画小歌>莫属,作为一个资深游戏爱好者,自然不能放过,连着完了N多盘,发现真的是爱不释手.下面就来说说< ...

最新文章

  1. 可视化的进行Sprint规划上线-Leangoo敏捷项目管理软件
  2. 什么是网络光端机?网络光端机工作原理及功能介绍!
  3. 数据库-MySQL-数据库设计-表的关联
  4. 995. K 连续位的最小翻转次数
  5. 个人作品- 蘑菇大战
  6. lj245a引脚功能图_JRC4558中文资料|引脚图及功能|应用电路图
  7. 硬盘容量统计神器WinDirStat
  8. 梦幻服务器最新开服时间,梦幻服务器开区及合服时间汇总查询(2)
  9. WIFI系列协议--802.11--系列协议说明
  10. 2022年全球市场软件无线电平台总体规模、主要企业、主要地区、产品和应用细分研究报告
  11. RTI_DDS调试日志
  12. Java基础篇--概念理解(泛型、注解)
  13. 经历121,市场情绪极度恐慌,美联储加息对我们有什么影响,币圈人又该何去何从?
  14. poi 启用保护后取消_保护模式禁用怎么解除
  15. 服务器临时文件的后缀名,在Java中创建具有指定扩展名后缀的临时文件
  16. galaxy 用不了_开箱即用使Galaxy S9更好的六种方法
  17. leetcode 跳跃游戏系列 c++
  18. 【2010强悍教程】一次性永远激活7290自带浏览器上网和彩信收发功能,不能上网的进。...
  19. 备战秋招-oppo java一面 面经
  20. pve7 安装rhel9.0报错之Fatal glibc error: CPU does not support x86-64-v2处理及Kernel panic - not syncing

热门文章

  1. 分治法在求解“最近对”问题中的应用(JAVA)
  2. jQuery教程08-属性筛选选择器
  3. 删除服务中的mysql服务
  4. SimpleDateFormat的一些简单用法:时间类型转字符串,字符串转时间
  5. android 屏幕坐标色彩,Android自定义View实现颜色选取器
  6. pythonwebview自动化测试_GitHub - githubwzg/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...
  7. finereport字段显示设置_QA | 表单如何设置字段显示逻辑?
  8. 计算机应用基础知道,谁知道计算机应用基础练习题的答案?
  9. MongoDB简介、在node中使用MongoDB
  10. Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)