tutorial studio programacion móviles evento español dibujar desarrollo curso aplicaciones java android xml

java - programacion - evento touch android studio



¿Cómo se dibuja un círculo dentro de un círculo con las formas de Android xml? (6)

Es tarde, pero tal vez sea útil, puedes usar el relleno para el círculo central.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="oval"> <solid android:color="#00fff"/> <padding android:bottom="30dp" android:left="30dp" android:right="30dp" android:top="30dp"/> <stroke android:width="1dp" android:color="@color/holo_red_light"/> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#00666666"/> <size android:width="120dp" android:height="120dp"/> <stroke android:width="1dp" android:color="@color/holo_red_light"/> </shape> </item> </layer-list>

Estoy tratando de hacer un pulgar para una barra de búsqueda para mi aplicación, y quiero tener un círculo interno rodeado por un círculo externo diferente, más grande (semitransparente). Estoy tratando de usar layer-list , pero estoy teniendo problemas. A continuación está mi código ...

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="oval" > <solid android:color="#00f" /> <size android:height="15dp" android:width="15dp" /> </shape> </item> <item> <shape android:shape="oval" > <solid android:color="#f00" /> <size android:height="10dp" android:width="10dp" /> </shape> </item> </layer-list>

Esperaría ver un pequeño círculo rojo encima de un círculo azul más grande, pero todo lo que veo es el pequeño círculo rojo. ¿Alguien tiene alguna idea?


La única forma en que logré que esto funcione es definir un trazo transparente para el círculo interno (es decir, superior) que es la diferencia entre el tamaño del círculo más grande y el círculo más pequeño.

Por ejemplo, esto:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Larger blue circle in back --> <item> <shape android:shape="oval"> <solid android:color="#00f"/> <size android:width="15dp" android:height="15dp"/> </shape> </item> <!-- Smaller red circle in front --> <item> <shape android:shape="oval"> <!-- transparent stroke = larger_circle_size - smaller_circle_size --> <stroke android:color="@android:color/transparent" android:width="5dp"/> <solid android:color="#f00"/> <size android:width="10dp" android:height="10dp"/> </shape> </item> </layer-list>

...Se ve como esto:


La esperanza debajo del fragmento de código ayuda :)

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- larger circle at the back --> <item> <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="#FFFFFF" /> <stroke android:width="1dp" android:color="#000000" /></shape> </item> <!-- inner circle --> <item > <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="2.1" android:useLevel="false" > <solid android:color="#000000" /> <stroke android:width="1dp" android:color="#FFFFFF" /></shape> </item> </layer-list>


Logré resolver esto estableciendo el ancho y alto del <item> en la <layer-list> . Probablemente no sea la mejor práctica, pero parece estar bien, al igual que el fondo del icono en la vista de lista que tenía dimensiones fijas.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- larger circle at the back --> <item android:height="54dp" android:width="54dp" android:gravity="center"> <shape android:shape="oval"> <solid android:color="#0000FF"/> <!-- thicker outer boarder --> <stroke android:width="2dp" android:color="#000000"/> </shape> </item> <!-- inner circle --> <item android:height="40dp" android:width="40dp" android:gravity="center"> <shape android:shape="oval" > <solid android:color="#00FF00"/> <stroke android:width="1dp" android:color="#000000"/> </shape> </item> </layer-list>


espero que ayude Esto es dibujable * .xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="oval"> <padding android:bottom="1dp" android:left="1dip" android:right="1dp" android:top="1dp" /> <solid android:color="#000" /> </shape> </item> <item> <shape android:shape="oval"> <padding android:bottom="1dp" android:left="1dip" android:right="1dp" android:top="1dp" /> <solid android:color="#EEE" /> </shape> </item> </layer-list>


esta es una versión corta de la respuesta de Sean Barbeau

<stroke android:width="1dp" android:color="@color/white" /> <solid android:color="@color/dark_blue" /> <size android:width="14dp" android:height="14dp" />