在Android上開發繪畫畫布應用程序時,我需要跟蹤所有點並且必須在另一個畫布中重繪它。現在我能夠跟蹤所有的點,但不知道如何在繪製和重繪的情況下同步點繪圖,即用戶應該在與繪圖相同的時間間隙重繪點。我怎樣才能做到這一點?Android,如何重繪與繪製畫布中相同時差的點?
回答
不知道這是你正在尋找的答案,但我會用一種時間戳記錄事件,真的是到下一點的時間差。類似於:
class Point {
int x;
int y;
long deltaTime;
}
它取決於您對時間的精準程度。秒到毫秒精度應該足夠好。您可以將deltaTime
解釋爲應繪製該點的時間或應繪製下一點的時間(在本例中,我將使用後者)。
使用deltaTime而不是直接時間戳的幾個原因是,它可以讓您檢查真正的長時間停頓,並且您將不得不在計算播放時計算增量時間。長時間使用它應該會給你足夠的空間來進行非常長的暫停,並且允許你使用Handler
類,它接受一個長整數以等待毫秒數,然後執行。
public class Redrawer implements Handler.callback {
LinkedList<Point> points; //List of point objects describing your drawing
Handler handler = new Handler(this); //Probably should place this in class initialization code
static final int MSG_DRAW_NEXT = 0;
public void begin(){
//Do any prep work here and then we can cheat and mimic a message call
//Without a delay specified it will be called ASAP but on another
//thread
handler.sendEmptyMessage(MSG_DRAW_NEXT);
}
public boolean handleMessage(Message msg){
//If you use the handler for other things you will want to
//branch off depending on msg.what
Point p = points.remove(); //returns the first element, and removes it from the list
drawPoint(p);
if (!points.isEmpty())
handler.sendEmptyMessageDelayed(MSG_DRAW_NEXT, p.deltaTime);
public void drawPoint(Point p){
//Canvas drawing code here
//something like canvas.drawPixel(p.x, p.y, SOMECOLOR);
//too lazy to look up the details right now
//also since this is called on another thread you might want to use
//view.postInvalidate
}
此代碼遠非完整或防彈。也就是說,您需要稍後暫停或重新開始重繪,因爲用戶切換活動或打電話等等。我也沒有實現獲取畫布對象的位置或方式的詳細信息(我想你有現在這部分)。此外,您可能還想跟蹤前一點,以便在重繪畫面的一小部分比重畫所有畫面快得多時,您可以將矩形發送到View.postInvalidate
。最後我沒有實施任何清理工作,處理程序和點數列表將需要根據需要銷燬。
這可能有幾種不同的方法,有些可能比這更好。如果您擔心觸摸事件之間的長時間停頓,只需在大於10秒的時間內添加支票即可,然後將其重寫爲10秒。防爆。 handler.sendEmptyMessage(MSG_DRAW_NEXT, Math.min(p.deltaTime, 100000));
但我建議使用常數而不是硬編號。
希望這會有幫助
Thanxb爲你的興趣...我會嘗試這個肯定.. – user1435009
- 1. 如何在Android中繪製背景畫布相同顏色
- 2. 在Android中重繪畫布
- 3. 如何重繪Android的畫布
- 4. 在Android畫布上繪製點
- 5. 畫布逐點繪製
- 6. 畫布3d繪製點
- 7. 畫布修復繪製點
- 8. Android:如何檢測由畫布繪製的線條中的點?
- 9. Android畫布重繪30fps
- 10. WPF強制重繪畫布
- 11. 用畫布繪製Android
- 12. 繪製矩形畫布android
- 13. Android:繪製畫布到ImageView
- 14. 從舊畫布繪製 - Android
- 15. Android畫布繪製矩形
- 16. Android多畫布。繪製
- 17. 如何在畫布上繪製畫布
- 18. HTML畫布:同時繪製多個getContext
- 19. 如何在Android 2.2中繪製或繪製陰影繪畫?
- 20. 如何繪製/重繪/動畫(MVC)
- 21. 畫布在與TextView相同的位置繪製文本
- 22. 畫布 - 繪製時間
- 23. Android:如何繪製指向一個畫布的點的數組
- 24. 在Android的畫布中繪製球體?
- 25. 從位圖或畫布的Android繪製區域與畫布
- 26. 如何在畫布上繪製多個繪圖而不繪製同步
- 27. 如何動畫在Android中使用代碼繪製的畫布?
- 28. Matplotlib畫布繪製
- 29. HTML5畫布繪製
- 30. 繪製到畫布
請問您能否再次指明問題,清楚!我理解你的陳述,直到「現在我能夠追蹤所有要點」,之後我無法理解你。 – Antrromet
您是否試圖像'Draw Something'一樣重播線條畫? – Russ
@russ是..你有任何想法分享? – user1435009