В основном я хочу использовать 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);
}
}
}
}
Я не понимаю. Этот код функционально эквивалентен этому в вашем исходном сообщении. Вы в основном изменили его с «if condition is true then run this code» на «if condition is false, а затем не запускайте этот код». Различные способы сказать одно и то же. –
эти два утверждения не эквивалентны. A означает, что B не эквивалентен не (A), а не (B). – felamaslen
'' 'A => B''' не является эквивалентом' '' ¬A => ¬B''', конечно. Но в этом случае второй оператор не может быть формализован как '' '¬A => ¬B'''. Когда A (Поверхность действительна) истинна, B (Draw in canvas) истинно; и когда A является ложным, B является ложным. В обоих случаях это '' 'A => B'''. Если вы можете сказать, что код для рисования не может быть выполнен в другой части кода, это еще одна история. – JCarlos