2011-08-21 94 views
2

我想寫下面的應用程序。有一個Canvas 和一個Button在LinearView中垂直堆疊。當第一次按下按鈕 時,在畫布中繪製一個圓,然後再次按下 圓會消失。圓圈必須在其空間中居中出現 。如何堆疊畫布和按鈕?

任何想法?

感謝,

JG

回答

2

這應該工作

自定義視圖類

public class DrawView extends View { 
    private Canvas viewCanvas; 

    public DrawView(Context context) { 
     super(context); 
     setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT 
      ,LinearLayout.LayoutParams.FILL_PARENT)); 
    } 

    public DrawView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Paint p = new Paint(); 
     p.setColor(Color.RED); 
     canvas.drawCricle(getWidth()/2,getHeight()/2,50,null); 
     viewCanvas = canvas; 
    } 

    public clearCircle(){ 
     viewCanvas.drawColor(Color.BLACK); 
    } 
} 

Activity類應該是這樣的

public class KeyboardTopDemo extends Activity { 
    private FrameLayout container; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ss); 

     container = (FrameLayout)findViewById(R.id.sc);   
     container.addView(new DrawView(this)); 
    } 

    public void clearHandler(View target){ 
     container.getChildAt(0).clearCircle(); 
    } 
} 

這是佈局xml文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <FrameLayout android:orientation="vertical" android:layout_width="fill_parent" 
     android:layout_height="0dip" android:id="@+id/sc" 
     android:scrollbars="horizontal" android:layout_weight="1.0"> 
     <ImageView android:layout_width="fill_parent" 
      android:layout_height="fill_parent" android:src="@drawable/chips"/> 
    </FrameLayout> 
    <Button android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:text="Clear" android:onClick="clearHandler"/>  
</LinearLayout>