2017-01-04 108 views
0

我試圖在android工作室開發一個應用程序,我想使用PaintCanvas,基本上畫的東西,當我使用publishProgressAndroid Studio在背景中的油漆

如果你們中的任何人都能告訴我我的代碼出了什麼問題,以及爲什麼這些代碼沒有繪製任何東西,那將是非常棒的。

注意。這一切都是在AsyncTaskActivity

@Override 
    protected void doInBackground(Void... params) { 

      publishProgress(); // Run onProgressUpdate() method 
     } 

    } 

@Override 
    protected void onProgressUpdate(Void... params) { 
     // Here you can access the UI thread 
     Canvas canvas = new Canvas(); 
     Paint pa1= new Paint(); 
     pa1.setColor(Color.RED); 
     pa1.setStyle(Paint.Style.FILL); 
     pa1.setStrokeWidth(50); 

     canvas.drawLine(0, 0, 100, 100, pa1); 
    } 
+1

您的畫布未連接到屏幕上的任何內容。您可能想要創建一個自定義視圖,可以使用「onProgressUpdate」來顯示進度。 –

+0

好的,所以我想我需要用'extends view'創建一個新類並嘗試從'onProgressUpdate()'調用'ondraw()'。是那個嗎? – difegui

+1

視圖需要成爲視圖層次結構的一部分,否則它將不會出現在屏幕上。所以,不,你不想創造一個新的觀點。您需要在活動的佈局中定義一個視圖,然後查找該視圖。按照[@Vova建議](http://stackoverflow.com/a/41469887/535871)將實際繪圖放在視圖的'onDraw'方法中。 –

回答

2

甲帆布需要繪製到任何一個位圖或圖。要繪製到位圖,您可以創建一個空的位圖,然後將其傳遞給構造函數中的Canvas。要繪製視圖,您需要創建一個自定義視圖並重寫將傳遞Canvas的onDraw函數。

繪製到位圖實際上不會顯示到屏幕上,除非某個視圖將該位圖繪製到其自己的畫布上。