Dibuja un círculo en una vista (android)

Estoy empezando con mis primeros intentos de escribir una aplicación para Android. Me gustaría para visualizar la Monte-Carlo-Aproximación de pi. Por lo tanto, primero quiero dibujar un círculo en una vista, pero no lo hago funcionar! He intentado crear mi propia clase "CircleView" que extiende "Ver" y sobrescribir el método onDraw (…) como se explica aquí: ¿Cómo dibujar círculo por lienzo en Android?

Esta es mi clase CircleView

public class CircleView extends View { public CircleView(Context context) { super(context); } protected void onDraw(Canvas canvas){ super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(150); canvas.drawCircle(50,50,20,paint); } } 

He insertado el CircleView en un LinearLayout con el siguiente código XML

 <com.tak3r07.montecarlopi.CircleView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/circleView" android:layout_weight="1"/> 

(Btw Android Studio me está diciendo en la vista XML en el lado derecho: "Rendering Problems Vista personalizada CircleView no está usando los constructores de vista de 2 o 3 argumentos, los atributos XML no funcionarán")

La aplicación sólo se bloquea con el siguiente registro: http://pastebin.com/Gv1GaHtX

¿Puede alguien decir lo que hice mal?

Pensé que esta configuración crearía una actividad con una vista que muestra un círculo.

Saludos

Edit: Crash se corrige agregando el constructor de parámetros 2 y 3 en CircleView (consulte https://stackoverflow.com/a/13797457/3248708 )

Pero ahora todavía no veo ningún círculo en la actividad

Un par de observaciones:

Debe tener en cuenta el ancho y la altura asignados a su vista al determinar el punto central y el radio de su círculo.

Debe tener en cuenta el relleno asignado a su vista para que no dibuje en esa parte reservada.

Debe evitar asignar objetos dentro de su método onDraw ya que esto se llama mucho.

Para permitir que su vista se especifique en un diseño XML, debe proporcionar al constructor que tome un Contexto y un AttributeSet. AttributeSet es el mecanismo por el cual sus atributos XML se pasan a su vista.

Probar esto:

 package com.tak3r07.montecarlopi; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class CircleView extends View { private static final int DEFAULT_CIRCLE_COLOR = Color.RED; private int circleColor = DEFAULT_CIRCLE_COLOR; private Paint paint; public CircleView(Context context) { super(context); init(context, null); } public CircleView(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } private void init(Context context, AttributeSet attrs) { paint = new Paint(); paint.setAntiAlias(true); } public void setCircleColor(int circleColor) { this.circleColor = circleColor; invalidate(); } public int getCircleColor() { return circleColor; } protected void onDraw(Canvas canvas) { super.onDraw(canvas); int w = getWidth(); int h = getHeight(); int pl = getPaddingLeft(); int pr = getPaddingRight(); int pt = getPaddingTop(); int pb = getPaddingBottom(); int usableWidth = w - (pl + pr); int usableHeight = h - (pt + pb); int radius = Math.min(usableWidth, usableHeight) / 2; int cx = pl + (usableWidth / 2); int cy = pt + (usableHeight / 2); paint.setColor(circleColor); canvas.drawCircle(cx, cy, radius, paint); } } 
  • ¿Cómo agregar una vista personalizada dentro de otra vista personalizada?
  • Android: obtiene los elementos de la matriz de cadenas y muestra uno por uno en la vista de texto
  • ¿Cómo puedo poner utf-16 caracteres en Android cadena de recursos?
  • Usar el nombre del paquete en XML
  • Recurso desplegable del atributo personalizado
  • Tratar de que Android LinearLayout se estire horizontal y verticalmente
  • Cambiar el color de la barra de navegación, Android
  • Concatenar cadenas múltiples en XML?
  • Error: Error al analizar XML: no bien formado (símbolo no válido) ...?
  • Quitar sombra de Autodesplegable de AutoCompleteTextView
  • Símbolo de porcentaje en strings.xml
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.