안녕하세요 대학교에서 안드로이드 공부중인 한 학생입니다.

한빛소프트에서 나온 안드로이드 프로그래밍 정복이라는 책을 보면서 공부하고 있는데요

캔버스 응용에서 막히네요 

주된 소스의 내용은 책에 있는 내용들입니다.


화면 레이아웃은

맨 위에 

이미지 보이기(버튼)   이미지 안보이기(버튼)   원(버튼, 클릭하면 원 나타남)   사각형(버튼)


                                  이미지


           원(캔버스에 그린것)   사각형(캔버스에 그린것)


이런식으로 배치하려고 하는데요

캔버스에 그린 도형을 main.xml에 어떻게 배치해야 되는지 모르겠네요

인터넷에 있는 내용들을 참고해서 해보기는 햇는데 실행 오류가 나네요.

java소스 파일입니다.

 public class jjava_exam extends Activity {

View catch_img;	
    @Override
    public void onCreate(Bundle 
savedInstanceState) {
        
super.onCreate(savedInstanceState);
        LinearLayout layout = 
(LinearLayout)findViewById(R.id.drawlayout);//이부분과 아래부분이추가한 부분입니다.
        MyView vw = 
new MyView(this);
        layout.addView(vw);    
    // 인터넷에서 찾아보고 추가한 부분입니다.
            
                      
                   이 부분에서 컴파일 
오류는 나지 않는데 실행 오류가 나네요
        
setContentView(R.layout.main);        
        catch_img = 
findViewById(R.id.ima);            
        
findViewById(R.id.visible).setOnClickListener(mClickListener);
        
findViewById(R.id.invisible).setOnClickListener(mClickListener);
    }
    protected class MyView 
extends View{
    	public 
MyView(Context context){
    		super(context);
    	}
    	public 
void onDraw(Canvas canvas){   // 삼각형 그리는 부분 아직 사각형은 그리지 않았습니다.
    		canvas.drawColor(Color.LTGRAY);
    		Paint 
Pnt=new Paint();
    		Pnt.setColor(Color.BLUE);
    		canvas.drawCircle(100, 
100, 80, Pnt);
    	}
    }


    Button.OnClickListener 
mClickListener = new Button.OnClickListener(){
        	public 
void onClick(View v){    		
        		switch(v.getId()){
        		case 
R.id.visible:
        			catch_img.setVisibility(View.VISIBLE);
        			break;
        		case 
R.id.invisible:
        			catch_img.setVisibility(View.INVISIBLE);
        			break; 
       	
        		}
        	}
        };
    }






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"
    android:gravity="center"
    >
	<LinearLayout
		android:orientation="horizontal"
		android:gravity="center"
	    	android:layout_width="fill_parent"
	    	android:layout_height="wrap_content"
	 	>
		<Button 
			android:id="@+id/visible"
		   
 	android:layout_width="120px" 
		   
 	android:layout_height="wrap_content" 
		   
 	android:singleLine="false"
		   
 	android:text="이미지 
보이기"
		   	 />
		<Button 
			android:id="@+id/invisible"
		   	 android:layout_width="120px"
		   	 android:layout_height="wrap_content" 
		   	 android:singleLine="false"
		   	 android:text="이미지 
안보이기"
		   	 />
		<Button 
			android:id="@+id/circle"
		 	android:layout_width="wrap_content" 
		 	android:layout_height="wrap_content" 
		   
 	android:text="원"
		   	 />
		<Button 
			android:id="@+id/rect"
		   	android:layout_width="wrap_content" 
		   	android:layout_height="wrap_content" 
		   
 	android:text="사각형"
		   
 	/>
    </LinearLayout>
	<LinearLayout
		android:orientation="horizontal"
	   
 android:layout_width="fill_parent"
	   
 android:layout_height="wrap_content"
	   
 android:gravity="center"
	   
 android:visibility="visible"
	   
 >
		<ImageView 
			android:id="@+id/ima"
			android:src="@drawable/icon"
		   
 android:layout_width="wrap_content" 
		   
 android:layout_height="wrap_content"     
		   
 />
    </LinearLayout>
	<LinearLayout
		android:id="@+id/drawlayout"
		android:orientation="horizontal"
		android:gravity="center"
	    	android:layout_width="fill_parent"
	    	android:layout_height="wrap_content"
	   	 >
	   
 </LinearLayout>
</LinearLayout>