¿Cómo definir una forma de círculo en un archivo dibujable XML de Android?
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 relleno con un color sólido en un archivo XML para incluirlo en mis archivos de diseño.
Lamentablemente, la documentación de android.com no cubre los atributos XML de las clases Shape. Creo que debería usar ArcShape para dibujar un círculo, pero no hay ninguna explicación sobre cómo establecer el tamaño, el color o el ángulo necesarios para hacer un círculo a partir de un arco.
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>
Establece esto como fondo de tu 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 que la oval
forma aparezca como un círculo, en estos ejemplos, su vista de que está usando esta forma como fondo debe ser un cuadrado o debe establecer las propiedades height
y width
de la etiqueta de forma en un valor igual.
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>
Puede utilizar 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 xml anterior se representa como:
Busque en los ejemplos del SDK de Android. Hay varios ejemplos en el proyecto ApiDemos:
/ApiDemos/res/drawable/
- caja_negra.xml
- forma_5.xml
- etc.
Se verá así para un círculo con un relleno degradado:
<?xml versión="1.0" codificación="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <gradiente android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:ángulo="270"/> </forma>