studio ic_dialog_email example custom create android android-drawable xml-drawable

ic_dialog_email - drawable android studio



¿Cómo obtener el efecto de luz centro de degradado de Android? (5)

quiero algo como la siguiente imagen

Lo intenté usando una forma dibujable

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:angle="360" android:centerX="50%" android:centerY="50%" android:gradientRadius="50%" android:endColor="#000000" android:centerColor="#FFFFFF" android:startColor="#000000" > </gradient> </shape>


Aquí está mi solución al problema.

<shape android:shape="rectangle"> <gradient android:endColor="@color/your_dark_color" android:startColor="@color/your_light_color" android:type="radial" android:gradientRadius="700"/>

Al cambiar el valor de android:gradientRadius , pude obtener los resultados exactos para mí.


Crea un nuevo archivo xml de Android (por ejemplo, GreyRadial.xml) en tu carpeta dibujable

En tu archivo xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:centerColor="#c1c1c1" android:endColor="#4f4f4f" android:gradientRadius="400" android:startColor="#c1c1c1" android:type="radial" > </gradient> </shape>

Usa este xml en el fondo de tu diseño usando

android:background="@drawable/GreyRadial"


El efecto se puede aproximar en una Lista de capas usando múltiples formas rectangulares. Use un rectángulo sólido con el color de fondo central. Luego use dos degradados con los colores de inicio y final iguales. Haga que el color central sea el mismo, excepto que establezca el alfa en cero.

En el siguiente código, los colores son los siguientes:

@color/background_dark = #ffb8860b @color/background_light = #ffd2b48c @color/transparent = #00b8860b <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape > <solid android:color="@color/background_light"/> </shape> </item> <item> <shape> <gradient android:startColor="@color/background_dark" android:centerColor="@color/transparent" android:endColor="@color/background_dark" android:angle="45"/> </shape> </item> <item> <shape> <gradient android:startColor="@color/background_dark" android:centerColor="@color/transparent" android:endColor="@color/background_dark" android:angle="135"/> </shape> </item> </layer-list>


Si la relación de aspecto del óvalo que necesita es fija, entonces puede usar el gradiente dibujable como fondo y usar scaleX o scaleY para estirarlo en un óvalo.

dibujable myradial.xml:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!--Radial gradient centered at middle of top with glow color--> <gradient android:startColor="FF336699" android:endColor="00000000" android:centerX="50%" android:centerY="50%" android:gradientRadius="50%" android:type="radial"/> </shape>

vista usarlo como fondo

<View android:layout_width="200dp" android:layout_height="100dp" android:background="@drawable/myradial" android:scaleX="0.5" />

Si la relación de aspecto no es fija, aún podría ser posible establecer scaleX en el código en tiempo de ejecución.

Esto no funcionará para todos en todas las situaciones. Se puede hacer para diseños difíciles. Una cosa buena es que es una sola pasada de renderización, en comparación con las 3 pasadas de la solución muy elegante publicada con 2 gradientes lineales sobre un sólido. También se puede usar para estirar cualquier gradiente, por ejemplo, para crear un gradiente lineal en un ángulo de 22,5 grados.


Una vez más solución:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:centerX="50%" android:centerY="50%" android:endColor="@android:color/black" android:gradientRadius="100%" android:startColor="@android:color/transparent" android:type="radial"/> </shape>