我試圖使我的畫布無效,當我點擊一個按鈕。我有一個按鈕佈局,我有一個畫布視圖。當我點擊一個按鈕時,圓圈應該隱藏或顯示。在現在的代碼中,我只能使我的畫布無效一次。當我第一次按下按鈕時,它會工作。但是,當我第二次按下它不起作用。例如:如果我按隱藏,然後顯示它的作品。但是當我再次按下隱藏按鈕時,它不起作用。當我點擊一個按鈕時,我希望CanvasView每次都失效。不僅是第一次。使點擊按鈕上的畫布無效?
public class CanvasWithButtonsActivity extends Activity {
boolean showCircle = true;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout());
findViewById(R.id.buttonHide).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
//HIDE
showCircle = false;
//How do i invalidate my canvas from here?
CanvasView cv = new CanvasView(getApplicationContext());
cv.invalidate();
}
});
findViewById(R.id.buttonShow).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
//SHOW
showCircle = true;
//How do i invalidate my canvas from here?
CanvasView cv = new CanvasView(getApplicationContext());
cv.invalidate();
}
});
}
public RelativeLayout layout(){
RelativeLayout mainLayout = new RelativeLayout(this);
mainLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT, 1));
mainLayout.setBackgroundColor(Color.WHITE);
View buttonLayout = LayoutInflater.from(getBaseContext()).inflate(R.layout.main, null);
buttonLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT, 1));
CanvasView cv = new CanvasView(getApplicationContext());
mainLayout.addView(cv);
mainLayout.addView(buttonLayout);
return mainLayout;
}
private class CanvasView extends View{
public CanvasView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
protected void onDraw(Canvas myCanvas){
Paint myPaint = new Paint();
myPaint.setColor(Color.BLUE);
if(showCircle == true)
myCanvas.drawCircle(myCanvas.getWidth()/2, 100, 20, myPaint);
}
}
}
如果有人有這個問題的解決方案,它會解決我的許多問題。
我不是很擅長編程。保留參考意味着什麼?我如何保留參考? – greenPostIt 2012-04-26 12:24:16
我已編輯包含更多詳細信息 – EvilDuck 2012-04-26 12:58:20
如果我明白我應該讓CanvasView cv變成全局變量。當我移動CanvasView cv = new CV(getA());在showCircle布爾下應用程序崩潰。我如何做一個CanvasView的全局實例而不會崩潰? – greenPostIt 2012-04-26 13:32:00