2011-08-21 93 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>