Forma personalizada de Android

Sé que es posible hacer una forma que mira algo como esto: introduzca la descripción de la imagen aquí

Pero no sé cómo empezar con él. ¿Puedo hacerlo como una forma? o tengo que hacer otra cosa?

BR

Oh mira eso, yo estaba equivocado – gradientes no son un problema:

import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Shader; import android.view.View; public class ButtonShadow extends View { public ButtonShadow(Context context) { super(context); } @Override public void onDraw(Canvas canvas) { RectF space = new RectF(this.getLeft(), this.getTop(), this.getRight(), this.getBottom()); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setShader(new LinearGradient(0, getWidth(), 0, 0, Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR)); canvas.drawArc(space, 180, 360, true, paint); Rect rect = new Rect(this.getLeft(),this.getTop() + (this.getHeight() / 2),this.getRight(),this.getBottom()); canvas.drawRect(rect, paint); } } 

Para más información sobre los rellenos de degradado, mira aquí: ¿Cómo rellenar una ruta en Android con un gradiente lineal?

Consulte este documento para obtener más detalles y debe utilizar la Lista de capas .

Aquí está el código según su imagen:

custom_layer_list.xml

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/topCircular" /> <item android:drawable="@drawable/rect" android:top="20dp" /> </layer-list> 

topCircular.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#000000" /> <corners android:topLeftRadius="25dp" android:topRightRadius= "25dp" /> </shape> 

Rect.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#000000" /> </shape> 

Puede definirlo en xml en un archivo de formas, pero puede ser mucho más fácil hacer un gráfico de parche simple de 9, entonces usted puede personalizar fácilmente cómo y dónde se estirarán los segmentos curvos y rectos.

Consulte http://developer.android.com/tools/help/draw9patch.html para obtener más información

EDITAR

Para más información sobre formas vea aquí: http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

Usted puede hacerlo solamente con forma:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#000000" /> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:topLeftRadius="90dip" android:topRightRadius="90dip" android:bottomLeftRadius="0dip" android:bottomRightRadius="0dip" /> </shape> 
  • Cómo enmascarar una región simple al pintar en Android?
  • Cambiar el radio de la esquina de programación programable
  • Android - Rectángulo redondeado dentro de rectángulo redondeado
  • ¿Cómo puedo dibujar la forma de la cinta Android Studio?
  • Android define la forma XML como dibujable mediante programación
  • Cómo hacer gradiente de fondo en android
  • Especificación de recortes transparentes en xml
  • Forma de androide dentro de una forma
  • Rendimiento sabio, lo que es típicamente mejor, utilizando una imagen o una forma creada xml como un drawable?
  • Atributo size ignorado en la lista de capas
  • RecyclerView con elementos personalizados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.