studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android xml circle transparent

para - manual de programacion android pdf



Círculo transparente con borde (6)

Intento crear un círculo con solo un borde usando XML en Android:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <stroke android:width="1dp" android:color="#000000"/> </shape>

El código que he usado está publicado arriba. Sin embargo, obtengo un disco sólido y no un anillo. Me gustaría obtener el resultado usando solo XML y no canvas. ¿Qué estoy haciendo mal?

Gracias.

EDITAR: Lo tengo que trabajar gracias a la respuesta a continuación. Aquí está mi código final:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="1.9" android:useLevel="false" > <solid android:color="@android:color/transparent" /> <size android:width="100dp" android:height="100dp"/> <stroke android:width="1dp" android:color="#FFFFFF"/> </shape>


Hueco

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <stroke android:width="1dp" android:color="@color/indicator_unselected" /> </shape>

Completo

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


Pruebe algo como esto

<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/transparent" /> <stroke android:width="2dp" android:color="@android:color/darker_gray" /> </shape>

Actualización: hecho android:thicknessRatio="2" para dar un círculo completo (usando Nexus 5 - Lollipop)


Puede usar el valor incorporado de Android para transparente como @android:color/transparent o use #0000 o #00000000

para arriba, comenzar por 4 dígitos fue primero para alfa y en 8 dígitos, los primeros dos dígitos fueron para alfa.

Cuando acaba de dar 3 dígitos o 6 dígitos en color que el valor alfa predeterminado era ff al pasar en un valor de 4 dígitos u 8 dígitos establece ese valor alfa de ese color


Si puedes usar vectores dibujables prueba esto

<vector android:height="24dp" android:viewportHeight="512.0" android:viewportWidth="512.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#FFFFFF" android:fillType="evenOdd" android:pathData="M0,0L512,0L512,512L0,512L0,0ZM256,511C396.8,511 511,396.8 511,256C511,115.2 396.8,1 256,1C115.2,1 1,115.2 1,256C1,396.8 115.2,511 256,511Z" android:strokeColor="#00000000" android:strokeWidth="1"/> </vector>


usar esto, va a funcionar

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <gradient android:centerX=".6" android:centerY=".40" android:endColor="@android:color/transparent" android:gradientRadius="20" android:startColor="@android:color/transparent" android:type="radial" /> <stroke android:width="1dp" android:color="#FFFFFF" /> <size android:height="100dp" android:width="100dp" /> </shape>


<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="oval" > <stroke android:width="4dp" android:color="@color/colorPrimaryDark" /> <corners android:radius="0dp" /> </shape> </item> <item android:top="1dp" android:bottom="1dp" android:left="1dp" android:right="1dp"> <shape android:shape="oval"> <solid android:color="@color/colorRed" /> <size android:height="@dimen/_100sdp" android:width="@dimen/_100sdp"></size> </shape> </item> </layer-list>