tutorial studio android android-drawable shapes

studio - ¿Cómo definir una forma de círculo en un archivo dibujable xml de Android?



shapes in android (13)

Tengo algunos problemas para encontrar la documentación de las definiciones de formas en XML para Android. Me gustaría definir un círculo simple con un color sólido en un archivo XML para incluirlo en mis archivos de diseño.

Lamentablemente, la Documentación en android.com no cubre los atributos XML de las clases de Shape. Creo que debería usar un ArcShape para dibujar un círculo, pero no hay una explicación sobre cómo establecer el tamaño, el color o el ángulo necesario para hacer un círculo a partir de un Arco.


Aquí hay un simple circle_background.xml para pre-material:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="oval"> <solid android:color="@color/color_accent_dark" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="@color/color_accent" /> </shape> </item> </selector>

Puede usarlo con el atributo ''android:background="@drawable/circle_background" en la definición de diseño de su botón


Código para círculo simple

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#9F2200"/> <stroke android:width="2dp" android:color="#fff" /> <size android:width="80dp" android:height="80dp"/> </shape>


Establecer esto como su fondo de vista

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <stroke android:width="1dp" android:color="#78d9ff"/> </shape>

Para uso en círculo sólido:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#48b3ff"/> </shape>

Sólido con trazo:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#199fff"/> <stroke android:width="2dp" android:color="#444444"/> </shape>

Nota : para hacer que la forma oval aparezca como un círculo, en estos ejemplos, ya sea su opinión de que está utilizando esta forma, ya que su fondo debe ser un cuadrado o debe establecer las propiedades de height y width de la etiqueta de forma en un valor igual .


Este es un círculo simple como dibujable en Android.

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#666666"/> <size android:width="120dp" android:height="120dp"/> </shape>


Mira en las muestras de Android SDK. Hay varios ejemplos en el proyecto ApiDemos:

/ ApiDemos / res / drawable /

  • black_box.xml
  • shape_5.xml
  • etc

Se verá algo como esto para un círculo con un relleno degradado:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="270"/> </shape>


No pude dibujar un círculo dentro de mi ConstraintLayout por alguna razón, simplemente no pude usar ninguna de las respuestas anteriores.

Lo que funcionó perfectamente es un simple TextView con el texto que sale, cuando presionas "Alt + 7":

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#0075bc" android:textSize="40dp" android:text="•"></TextView>


Puedes probar esto ...

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:innerRadiusRatio="700" android:thickness="100dp" android:useLevel="false"> <solid android:color="#CCC" /> </shape>

Además, puede ajustar el radio del círculo ajustando el android:thickness .


Puedes usar VectorDrawable como se muestra a continuación:

<?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="200dp" android:height="200dp" android:viewportHeight="64" android:viewportWidth="64"> <path android:fillColor="#ff00ff" android:pathData="M22,32 A10,10 0 1,1 42,32 A10,10 0 1,1 22,32 Z" /> </vector>

El anterior XML se procesa como:


Si quieres un circulo como este

Intenta usar el siguiente código:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="2" android:useLevel="false" > <solid android:color="@android:color/white" /> <stroke android:width="1dp" android:color="@android:color/darker_gray" /></shape>


Solo usa

ShapeDrawable circle = new ShapeDrawable( new OvalShape() );


<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="oval"> <solid android:color="@color/text_color_green"/> <!-- Set the same value for both width and height to get a circular shape --> <size android:width="250dp" android:height="250dp"/> </shape> </item> </selector>


<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- fill color --> <solid android:color="@color/white" /> <!-- radius --> <stroke android:width="1dp" android:color="@color/white" /> <!-- corners --> <corners android:radius="2dp"/> </shape>


<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <stroke android:width="10dp" android:color="@color/white"/> <gradient android:startColor="@color/red" android:centerColor="@color/red" android:endColor="@color/red" android:angle="270"/> <size android:width="250dp" android:height="250dp"/> </shape>