2011-08-10 52 views
1

我是新開發的Android開發人員,並且遇到了如何在圖像頂部添加繪製線的問題。我可以繪製線條並顯示它,或者我可以顯示圖像,但我無法弄清楚如何同時顯示兩者。在main.xml頂部添加onDraw drawable

考慮一個anolog速度計的規格。在main.xml中我有一個ImageView,它顯示速度計減去針的圖像。對於針,我想以編程方式繪製一條線並將其添加到量表圖像的頂部。

這裏是我的活動和視圖代碼:

public class StartDraw extends Activity { 
    DrawView drawView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //setContentView(R.layout.main); 
     setContentView(new DrawView(this)); 

    } 

    final class DrawView extends View { 
     Paint paint = new Paint(); 

     public DrawView(Context context) { 
     super(context); 
      paint.setColor(Color.WHITE); 
      paint.setStrokeWidth(5); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

      canvas.drawLine(30, 100, 150, 200, paint); 
     } 
    } 
} 

這裏是我的main.xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<ImageView android:src="@drawable/image" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageView1"></ImageView> 
</LinearLayout> 

如何顯示在速度表的頂部針?任何幫助將不勝感激。

回答

1

一種選擇是將DrawView分解成單獨的類文件。然後,您可以將它作爲main.xml的LinearLayout中的元素添加。

你打電話setContentView(R.layout.main);後,您可以通過執行到您的活動的drawView函數實例的引用:

DrawView dv = (DrawView)findViewById(R.id.drawView); //use the actual id you define in your layout xml 
+0

而不是使用 「canvas.drawLine(30,100,150,200,油漆);」 ,我將使用類似「canvas.drawLine(startx,starty,stopx,stopy,paint);」在我的主要活動中計算startx,starty,stopx和stopy。如果我將DrawView分解爲一個單獨的類文件,那麼如何使用我的主要活動中計算的值來更新DrawView的drawLine中使用的座標? – Bill

+0

我編輯了我的問題,以顯示如何獲得對DrawView實例的引用。此時,您可以將信息傳遞給它。 – elevine

+0

謝謝!它現在有效。 – Bill