【猜画小歌】辅助插件FunnyDraw江湖召集令
生活随笔
收集整理的這篇文章主要介紹了
【猜画小歌】辅助插件FunnyDraw江湖召集令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先來一張效果圖:
源碼地址: 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 {public MotionDrawer buildDrawer(Canvas canvas) {// 根據畫布位置和尺寸,將圓置于畫布中心return new CircleMotionDrawer(canvas.centerX, canvas.centerY, canvas.width / 4,DEFAULT_DURATION);}} 復制代碼編寫一個復雜的Sample,比如酒杯
復雜的圖案,需要組合各種MotionDrawer,可以使用MotionDrawerSet來組合。
public class WineGlassSample implements Sample {public 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江湖召集令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS的eval函数解密反混淆
- 下一篇: SSH限制ip登陆