2011-08-10 5 views
1

저는 안드로이드 개발에 초보자이며 이미지 위에 그려진 선을 추가하는 방법을 알아내는 데 문제가 있습니다. 선을 그려서 표시하거나 이미지를 표시 할 수 있지만 동시에 두 가지를 모두 표시하는 방법을 알 수는 없습니다.main.xml 위에 onDraw 드로어 블 추가하기

anolog speedometer 게이지를 고려하십시오. main.xml에는 Speedometer에서 바늘을 뺀 이미지를 표시하는 ImageView가 있습니다. 바늘의 경우 프로그래밍 방식으로 선을 그려 게이지 이미지 위에 추가하고 싶습니다. 여기

내 활동보기 코드 : 내 main.xml에 파일을 여기에

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); 
     } 
    } 
} 

하고 :

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

관련 문제