好吧,所以我試圖從onDraw方法之外繪製到Android上的畫布。onDraw方法之外的Android圖形
這只是最簡單的展示我的代碼:
public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Paint p = new Paint();
p.setColor(Color.GREEN);
Panel a = new Panel(this,150,150,50,p);
a.drawThing();
setContentView(a);
}
class Panel extends View{
private float radius, x, y;
private Canvas CAN;
private Paint p;
public Panel(Context context, float x, float y, float radius, Paint p){
super(context);
this.x = x;
this.y = y;
this.radius = radius;
this.p = p;
}
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
CAN = canvas;
}
public void drawThing(){
CAN.drawCircle(x, y, radius, p);
}
}
}
你明白我想要做什麼?但由於某些原因,它拋出一個NullPointerException
謝謝。畫外屏是我如何做到的。但是我仍然不知道應該如何以及在哪裏調用invalidate。 – SMUsamaShah
invalidate應該在代碼中的任何地方被調用,您知道屏幕上的信息不再正確,並且您的視圖需要重繪。因此,如果您正在製作某種數據視圖,則可以在數據更改時使其無效。如果您正在製作遊戲,則可以在遊戲循環的每次迭代中都使其失效。到底什麼時候這取決於你想要做什麼。 – mtmurdock