2011-10-07 12 views
0

上我有一個XML佈局是這樣的:用戶圖紙沒有顯示在畫布

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
> 

    <com.somedomain.drawings.DrawingSurface 
     android:layout_width="fill_parent" 
     android:layout_height="200dip" 
      android:id="@+id/drawingSurface" 
      android:background="@drawable/bg2"/> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" > 

     <Button 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="OK" 
       android:onClick="onClick" 
       android:id="@+id/colorGreenBtn" /> 

    </LinearLayout> 

</RelativeLayout> 

當我試圖借鑑DrawingSurface,圖紙沒有顯示。但畫布的背景圖像正在顯示。當我保存它時,圖形顯示在輸出中。

當我刪除DrawingSurface的背景圖像並嘗試繪製它時,它顯示出來。

我想在用戶使用背景圖像在畫布上繪製時顯示圖形。有任何想法嗎?非常感謝您的幫助! :)

更新:這是我的繪製代碼

@Override 
public void run() { 
    Canvas canvas = null; 

    while (_run){ 
     if(isDrawing == true){ 
      try{ 

       canvas = mSurfaceHolder.lockCanvas(null); 
       if(mBitmap == null){ 
        mBitmap = Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888); 
       } 


       final Canvas c = new Canvas (mBitmap); 

       c.drawColor(0, PorterDuff.Mode.CLEAR); 
       canvas.drawColor(0, PorterDuff.Mode.CLEAR); 
       canvas.drawColor(0x00000000); 

       commandManager.executeAll(c,previewDoneHandler); 
       previewPath.draw(c); 

       canvas.drawBitmap (mBitmap, 0, 0,null); 
      } finally { 
       mSurfaceHolder.unlockCanvasAndPost(canvas); 
      } 


     } 

    } 

} 
+0

您可能需要包含您的代碼,因爲您的繪圖代碼可能存在錯誤。 –

+0

感謝您的回覆@David Olsson,我更新了我的問題。 – Emkey

回答

0

幾件事情要嘗試:

1)把ImageView的XML中的drawSurface之前,並把BG到ImageView的。

我知道surfaceView與其他視圖不同,但你可以試試。

2)也許你可以先繪製線程開始繪製bg到畫布上。 canvas.drawBitmap()可能是你想要使用的一個。

+0

感謝您的回覆@Terence Lui,您的第一個建議是,我無法制作透明的畫布背景。我搜索,但我找不到這樣的事情,或者我的谷歌技能失敗。你有第二個建議的示例代碼?你的意思是我必須把bg圖像和用戶的圖畫結合起來嗎? – Emkey

+0

如果我理解正確,「透明畫布」的含義實際上是透明的surfaceView。當我在研究surfaceView時,它必須位於其「窗口」的頂部或底部。所以如果你在surfaceView上沒有任何東西,你可以設置surfaceView的z順序到它的窗口頂部。並執行這樣的事情時,初始化surfaceView: surface(){getHolder()。setFormat(PixelFormat.TRANSLUCENT);/...} –

+0

但是,如果你不想讓surfaceView透明(我認爲你不會,因爲你想要一個bg surfaceView),所以你所要做的就是自己繪製bg並初始化畫布,如下所示:canvas = new畫布(yourbgImageBitmap);所以一切都會在htis位圖上繪製。這很容易。 –