ventana tipo tener samsung redondeadas ocultar notificaciones las flotantes estilo esquinas emergente contenido como android

android - tipo - notificaciones whatsapp s9



¿Cómo hacer una forma con la esquina redondeada redondeada superior izquierda y la esquina redondeada inferior izquierda? (6)

Quiero hacer una forma con la esquina superior izquierda redondeada y la esquina inferior izquierda-redondeada:

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#555555"/> <stroke android:width="3dp" android:color="#555555" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:bottomRightRadius="0dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="0dp"/> </shape>

Pero la forma anterior no me dio lo que quiero. Me da un rectángulo sin esquinas redondeadas.

¿Alguien puede ayudar?

Gracias.


De la documentation :

NOTA: Cada esquina debe (inicialmente) proporcionar un radio de esquina mayor que 1, o bien no se redondean las esquinas. Si desea que las esquinas específicas no se redondeen, una solución alternativa es usar android: radius para establecer un radio de esquina predeterminado mayor que 1, pero luego anular cada esquina con los valores que realmente desea, proporcionando cero ("0dp" ) donde no quieres esquinas redondeadas.

Por ejemplo, tienes que establecer un android: radius = "" para poder hacer lo que quieras:

<corners android:radius="2dp" android:bottomRightRadius="0dp" android:topRightRadius="0dp"/>

Otro GOTCHA, es que si haces este tipo de cosas, la vista previa en Eclipse no es correcta . ¡De hecho tienes que iniciar tu aplicación para ver los resultados reales!


Este error está archivado here . Este es un error de los dispositivos Android que tienen un nivel de API inferior a 12. Debe colocar las versiones correctas de sus diseños en la carpeta drawable-v12, que se utilizará para el API de nivel 12 o superior. Y una versión errónea (esquinas conmutadas / invertidas) del mismo diseño se colocará en la carpeta dibujable predeterminada que será utilizada por los dispositivos que tengan un nivel de API inferior a 12.

Por ejemplo: tuve que diseñar un botón con una esquina redondeada en la parte inferior derecha.

En la carpeta ''drawable'' - button.xml: tuve que hacer que la esquina inferior izquierda se redondeara.

<shape> <corners android:bottomLeftRadius="15dp"/> </shape>

En la carpeta ''drawable-v12'' - button.xml: la versión correcta del diseño se colocó aquí para ser utilizada para el nivel API 12 o superior.

<shape> <corners android:bottomLeftRadius="15dp"/> </shape>


Parece un error http://code.google.com/p/android/issues/detail?id=939 .

Finalmente tengo que escribir algo como esto:

<stroke android:width="3dp" android:color="#555555" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:radius="1dp" android:bottomRightRadius="2dp" android:bottomLeftRadius="0dp" android:topLeftRadius="2dp" android:topRightRadius="0dp"/>

Debo especificar android: bottomRightRadius = "2dp" para la esquina inferior izquierda (otro error aquí).


Si bien esta pregunta ya se ha respondido (es un error que causa la inversión de bottomLeftRadius y bottomRightRadius), el error se ha corregido en Android 3.1 (nivel 12 de la API, probado en el emulador).

Por lo tanto, para asegurarse de que sus drawables se vean correctos en todas las plataformas, debe colocar versiones "corregidas" de los dibujables (es decir, donde los radios inferiores a la izquierda / derecha son correctos en el xml) en la carpeta res / drawable-v12 de su aplicación. De esta forma, todos los dispositivos que utilicen una versión de Android> = 12 usarán los archivos dibujables correctos, mientras que los dispositivos que usen versiones anteriores de Android usarán las herramientas "alternativas" que se encuentran en la carpeta res / drawables.


También puedes usar números extremadamente pequeños para tu radio ''.

<corners android:bottomRightRadius="0.1dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="0.1dp" />


para otros hay una solución para cualquier nivel de API, puede colocar un elemento uno encima del otro ejemplo:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list>

el resultado con color claro para mostrarle los tres elementos:

el resultado final :

Atentamente.