Dibujo sobre lienzo fuera del método onDraw ()

Aquí está mi método OnDraw ()

void onDraw(Canvas canvas) { mCanvas = canvas; //invalidate(); int x = 0; Iterator<Letter> it = mNextUpQueue.iterator(); while(it.hasNext()){ mCanvas.drawBitmap(it.next().getNext(), mNextUpCoordinates.get(x).x, mNextUpCoordinates.get(x).y, mPaint); mCanvas.drawBitmap(mAvailableLetters.get(x).getNotPressed(), mAvailableLettersCoordinates.get(x).x, mAvailableLettersCoordinates.get(x).y, mPaint); x++; } } 

He establecido lienzo a una variable global mCanvas. Pero si intento pintar en mCanvas desde fuera del método onDraw () obtengo un error. ¿Es porque estoy haciendo algo mal o el lienzo siempre debe ser utilizado desde dentro del método onDraw?

No debe tomar la referencia al Canvas pasada, ya que sólo es válida durante la llamada al método onDraw(Canvas) .

Recomiendo leer http://developer.android.com/guide/topics/graphics/2d-graphics.html#draw-with-canvas a fondo, las formas posibles se explican muy bien:

  1. A la lona proporcionada al método onDraw(Canvas) , durante esta llamada al método. Esto se hace en el hilo de interfaz de usuario, por lo que nada complicado se debe intentar aquí
  2. A un lienzo que te creaste a ti mismo. Esto podría ser útil para preparar un mapa de bits en otro hilo y luego dibujar el mapa de bits en el lienzo dado al onDraw(Canvas)
  3. Utilizar una SurfaceView y obtener un objeto Canvas con el método lockCanvas() .
  • Tratando de obtener el tamaño de visualización de una imagen en un ImageView
  • Android SweepGradient
  • Dibujar un rectángulo con un gesto de movimiento
  • El método ImageView: onDraw dibuja "detrás" del fondo de la imagen, no en la parte superior
  • Android - calcular el ángulo del arco
  • PorterduffXfermode: borra una sección de un mapa de bits
  • Android - Dibujo de un laberinto de lienzo con el movimiento de caracteres suave
  • ¿Cómo animar gradiente?
  • problemas con Android FrameLayout cuando override onDraw
  • Limpiar el lienzo con Canvas.drawColor ()
  • Vista personalizada de Android Vuelta de memoria de mapa de bits
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.