2011-07-12 24 views
0

我想在Android中創建一個畫布,我們可以將它用作白板並在畫布上繪製。Android畫布 - 白板

一旦在畫布上繪製了一些東西,我想存儲畫布,以便它可以在另一臺設備上再次繪製或稍後在您啓動應用程序時檢索。我不想將它作爲圖像存儲。

什麼是存儲在畫布上的東西的最佳解決方案?

enter image description here

+0

爲什麼你不想把它作爲圖像存儲? – Felix

+0

@Felix,以便我可以將其發送給其他手機並重新繪製並使用它進一步更改 –

+0

1)您可以輕鬆地將圖像發送到其他設備; 2)您可以輕鬆將圖像繪製到畫布上,以便進一步編輯。 – Felix

回答

1

我看除了它保存爲圖像兩種可能性:

  1. 保存畫布爲對象,以手機存儲空間。然後,您可以將該文件發送到其他設備,或者在重新啓動活動時加載該文件。

  2. 每次用戶觸摸屏幕時(和應繪製的東西)保存按鍵。

退房如何保存文件鏈接:http://developer.android.com/guide/topics/data/data-storage.html

+0

謝謝。 Emiam,我應該將它存儲爲什麼樣的對象?它會成爲一個文件嗎?我正在使用藍牙套接字和服務器套接字將數據發送到連接的移動設備。 –

+0

是的,它會是一個文件。你可以保存你喜歡的任何物體。如果您想要使用選項編號1,則實際上可以將其另存爲Canvas對象,並將其作爲Canvas對象進行讀取。這實際上可以讓您在將Canvas寫入文件之前調用canvas()方法,例如restore()(並且還原成最後一個save())。如果你想使用選項2,你可以編寫一個自定義的類來保存所有的按鍵,並保存該對象。 – Emiam

+0

非常感謝您將嘗試並回復您。只是瞭解如何處理差異屏幕大小,任何想法? –

1

在繪製時,繪製成位圖支持的帆布:

private Bitmap bitmap; 
protected void onDraw(Canvas canvas) { 
    bitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.RGB_565); 
    Canvas bitmapCanvas = new Canvas(bitmap); 
    // perform all drawing into bitmapCanvas 
    canvas.drawBitmap(bitmap, 0, 0, null); 
} 

然後,您可以使用compress保存您的位圖和在BitmapFactory類中使用BitmapFactory.decodeFile或其他解碼方法加載它。

+0

謝謝Felix ..只是一個快速的問題..圖像的大小與對象的大小(從其他答案),這將在傳輸和大小方面更好? –

+0

這取決於。如果有很多繪圖操作,位圖會變小。如果數量少,位圖**可能會更大(這取決於圖像實際包含的內容)。此外,PNG更加靈活 - 您可以在任何地方閱讀它們。序列化的Java對象,甚至JSON對象都可能遭受貶低/解碼錯誤(即,如果您的對象結構發生變化)。 – Felix

+0

okie。謝謝:)讓我試着實現這一點,讓你知道:) –