Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo dibujar círculo por lienzo en Android?

Quiero dibujar círculo por lienzo. Aquí está mi código:

[MyActivity.java]:

public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { ... setContentView(new View(this,w,h)); } } 

[View.java]:

 public class View extends SurfaceView { public View(Context context, int w, int h) { super(context); Canvas grid = new Canvas(Bitmap.createBitmap(h,w, Bitmap.Config.ARGB_8888)); grid. drawColor(Color.WHITE); Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); grid.drawCircle(w/2, h/2 , w/2, paint); } } 

Así que tengo la pantalla sólo negro sin círculo. ¿Por qué no funciona? ¿Como arreglarlo?

  • Implementación de mensajería de Google Cloud en Java con MySql
  • ¿Cómo puedo reproducir un archivo cif encriptado con ExoPlayer?
  • Android L - Botón de acción flotante (FAB)
  • FindViewById () está regresando no puede encontrar el símbolo, pero el ID se define en el diseño?
  • Cómo poner un tarro en classpath en Eclipse?
  • RequestLayout () incorrectamente llamado por android.widget.RelativeLayout android
  • Cómo conseguirPackageManager en fragmento de Android
  • Sonido que no juega en android> sándwich de helado
  • 5 Solutions collect form web for “Cómo dibujar círculo por lienzo en Android?”

    Puede anular el método onDraw de su vista y dibujar el círculo.

     protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(x, y, radius, paint); } 

    Para una mejor referencia en el dibujo de vistas personalizadas consulte la documentación oficial de Android.

    http://developer.android.com/training/custom-views/custom-drawing.html

     import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } public class MyView extends View { Paint paint = null; public MyView(Context context) { super(context); paint = new Paint(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int x = getWidth(); int y = getHeight(); int radius; radius = 100; paint.setStyle(Paint.Style.FILL); paint.setColor(Color.WHITE); canvas.drawPaint(paint); // Use Color.parseColor to define HTML colors paint.setColor(Color.parseColor("#CD5C5C")); canvas.drawCircle(x / 2, y / 2, radius, paint); } } } 

    Edita si quieres dibujar círculo en el centro. También puedes traducir tu lienzo entero al centro y luego dibujar círculo en el centro.

     canvas.translate(getWidth()/2f,getHeight()/2f); canvas.drawCircle(0,0, radius, paint); 

    Estos dos enlaces también ayudan

    http://www.compiletimeerror.com/2013/09/introduction-to-2d-drawing-in-android.html#.VIg_A5SSy9o

    http://android-coding.blogspot.com/2012/04/draw-circle-on-canvas-canvasdrawcirclet.html

     public class CircleView extends View { private static final String COLOR_HEX = "#E74300"; private final Paint drawPaint; private float size; public CircleView(final Context context, final AttributeSet attrs) { super(context, attrs); drawPaint = new Paint(); drawPaint.setColor(Color.parseColor(COLOR_HEX)); drawPaint.setAntiAlias(true); setOnMeasureCallback(); } @Override protected void onDraw(final Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(size, size, size, drawPaint); } private void setOnMeasureCallback() { ViewTreeObserver vto = getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { removeOnGlobalLayoutListener(this); size = getMeasuredWidth() / 2; } }); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void removeOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener listener) { if (Build.VERSION.SDK_INT < 16) { getViewTreeObserver().removeGlobalOnLayoutListener(listener); } else { getViewTreeObserver().removeOnGlobalLayoutListener(listener); } } } 

    Ejemplo Xml: producirá un círculo de 5dp

      <com.example.CircleView android:layout_width="10dp" android:layout_height="10dp"/> 
     @Override public void onDraw(Canvas canvas){ canvas.drawCircle(xPos, yPos,radius, paint); } 

    Arriba está el código para representar un círculo. Ajustar los parámetros a su adaptación.

    Prueba esto

    Introduzca aquí la descripción de la imagen

    El código completo para dibujar un círculo o descargar el código fuente del proyecto y probarlo en su estudio de Android. Dibujar círculo en lienzo mediante programación.

     import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.widget.ImageView; public class Shape { private Bitmap bmp; private ImageView img; public Shape(Bitmap bmp, ImageView img) { this.bmp=bmp; this.img=img; onDraw(); } private void onDraw(){ Canvas canvas=new Canvas(); if (bmp.getWidth() == 0 || bmp.getHeight() == 0) { return; } int w = bmp.getWidth(), h = bmp.getHeight(); Bitmap roundBitmap = getRoundedCroppedBitmap(bmp, w); img.setImageBitmap(roundBitmap); } public static Bitmap getRoundedCroppedBitmap(Bitmap bitmap, int radius) { Bitmap finalBitmap; if (bitmap.getWidth() != radius || bitmap.getHeight() != radius) finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius, false); else finalBitmap = bitmap; Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(), finalBitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, finalBitmap.getWidth(), finalBitmap.getHeight()); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(Color.parseColor("#BAB399")); canvas.drawCircle(finalBitmap.getWidth() / 2 + 0.7f, finalBitmap.getHeight() / 2 + 0.7f, finalBitmap.getWidth() / 2 + 0.1f, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(finalBitmap, rect, rect, paint); return output; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.