2011-08-10 14 views
1

私はAndroid開発の初心者です。画像の上に描画された線を追加する方法がわかりません。私は線を描いてそれを表示することができます、または私は画像を表示することができますが、私は同時に両方を表示する方法を把握することはできません。main.xmlの上にonDrawドロアブルを追加してください

anolog speedometer guageを考えてみましょう。 main.xmlには、Speedometerから針を引いた画像を表示するIm​​ageViewがあります。針については、プログラムで線を描き、それをゲージ画像の上に追加する必要があります。ここで

は私の活動とビューのコードです:

<?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> 

私はスピードメーターの上に針を表示するにはどうすればよい:

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ファイルのですか?どんな助けでも大歓迎です。

答えて

1

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

関連する問題