基本上我想使用SurfaceView進行動畫。因此這個類實現了Runnable。爲了試驗,我想畫一個圓圈。但是,它只顯示黑屏。SurfaceView顯示黑屏 - Android
我一直在嘗試幾天。真的很感激,如果有人可以幫助。
MainActivity類別
public class MainActivity extends Activity {
private Bitmap Liquid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature (Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
DrawStripFrame D1 = new DrawStripFrame(this);
setContentView(D1);
DrawStripFrame類
public class DrawStripFrame extends SurfaceView implements Runnable{
private SurfaceHolder holder;
private boolean running = true;
public DrawStripFrame (Context context){
super (context);
holder = getHolder();
}
@Override
public void run(){
while(running){
if(holder.getSurface().isValid()){
Canvas c = holder.lockCanvas();
c.drawARGB(0, 0, 0, 0);
Paint redPaint = new Paint();
redPaint.setColor(Color.RED);
c.drawCircle(100, 100, 30, redPaint);
holder.unlockCanvasAndPost(c);
}
}
}
}
我不明白。此代碼在功能上等同於原始帖子中的代碼。你基本上將它從「如果條件爲真,然後運行此代碼」更改爲「如果條件爲假,那麼不要運行此代碼」。說同一件事的不同方式。 –
這兩個陳述並不等同。 A意味着B不等於不等於(A)意味着不等於(B)。 – felamaslen
''A => B'''當然不等於'''¬A=>¬B'''。 但是在這種情況下,第二條語句不能形式化爲''¬A=>¬B'''。 當A(表面有效)爲真時,B(在畫布中繪製)爲真;當A是假時,B是假的。 這兩種情況都是'''A => B'''。如果你可以說代碼的繪製不能在代碼的另一部分執行,那是另一回事。 – JCarlos