Color de fondo de relleno de lienzo de Android (aplicación de lona)

Al tener los siguientes códigos, tengo algunas preguntas.

public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( new View(this) { Paint mPaint = new Paint(); @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); int width = this.getWidth(); int height = this.getHeight(); int radius = width > height ? height/2 : width/2; int center_x = width/2; int center_y = height/2; // prepare a paint mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(5); mPaint.setAntiAlias(true); // draw a rectangle mPaint.setColor(Color.BLUE); mPaint.setStyle(Paint.Style.FILL); //fill the background with blue color canvas.drawRect(center_x - radius, center_y - radius, center_x + radius, center_y + radius, mPaint); // draw some text and rotation mPaint.setTextSize(50); mPaint.setTextAlign(Paint.Align.CENTER); mPaint.setColor(Color.BLACK); canvas.drawText( "Hello World" , center_x , center_y, mPaint); } }); } } 

Introduzca aquí la descripción de la imagen

P1: ¿Cómo puedo llenar el color azul en el marco? (Las palabras siguen apareciendo)

P2: ¿Cuántas vistas y superficies hay en esta aplicación? ¿Cómo puedo contar esto en la aplicación?

P3: ¿Cuántas ventanas hay en esta aplicación?

Q4: En el código, no veo ningún objeto de mapa de bits en él. Sin embargo, pensé que el mapa de bits es el objeto que realmente puedo dibujar cosas en él. ¿Mi comprensión es incorrecta? Una posibilidad es que el constructor de Canvas inicialice el mapa de bits cuando se vuelve a crear.

P5: Sabía que estas cosas gráficas finalmente irán a la superficie y luego pasar a surfaceflinger para la composición final. ¿Dónde se encuentra en mi código?

Gracias por cualquier respuesta.

Cinco preguntas. Veamos dónde puedo ayudar.

P1: Dile a la Paint que llene el rectángulo: paint.setStyle(Paint.Style.FILL);

P2: sólo veo la única vista que cree mediante programación. ¿Por qué le gustaría contar las opiniones?

P3: Otra vez: Uno

Q4: Dibuja un bitmaps mutable por envolverlos con un Canvas . El método para dibujar son parte de Canvas

Q5: El código que muestra es parte de una actividad. La actividad es llamada por Android. Es tu punto de entrada en tu aplicación.

Gracias por la respuesta. Hice el trabajo de hacer el código para la respuesta marcada, y trabaja.

  Bitmap bg = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bg); // paint background with the trick Paint rect_paint = new Paint(); rect_paint.setStyle(Paint.Style.FILL); rect_paint.setColor(Color.rgb(0, 0, 0)); rect_paint.setAlpha(0x80); // optional canvas.drawRect(0, 0, width, height, rect_paint); // that's painting the whole canvas in the chosen color. 

P2: El Visor de Jerarquía es muy útil cuando quieres contar cuántas vistas en tu aplicación. Optimización de la interfaz de usuario

  • Android Vista vs SurfaceView vs GLSurfaceView para la aplicación de dibujo 2D con Zoomable interfaz de usuario
  • Android: hilo deteniéndose intermitentemente
  • Evite dibujar más allá del lienzo con SurfaceView
  • Uso de surfaceView para capturar un video
  • Android, lienzo: ¿Cómo puedo borrar (eliminar contenidos de) un lienzo (= bitmaps), que viven en una surfaceView?
  • Android: Crash: Línea de archivo XML binario: Error al inflar la clase (usando SurfaceView)
  • Cómo cambiar la cámara Android a la vertical en la vista de superficie?
  • SurfaceView y ANownWindow
  • Vista previa de la cámara Android en una pantalla cuadrada estirada
  • Android Surfaceview Hilos y fugas de memoria
  • Tomar una foto lo más rápido posible con la API de la cámara en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.