Forma personalizada de Android
Sé que es posible hacer una forma que mira algo como esto:
Pero no sé cómo empezar con él. ¿Puedo hacerlo como una forma? o tengo que hacer otra cosa?
- ¿Cómo cambiar dinámicamente el color de la forma?
- Cómo cambiar el ancho de trazo de una forma de programación en Android?
- Crear triángulo con cornors redondeados
- Cómo definir una forma de círculo en un archivo extraíble xml de Android?
- Android Shape - Gradiente debe ir al lado derecho
BR
- Crear la forma de archivo xml en carpeta extraíble en android studio
- Forma personalizada mientras conversas en android usando un archivo xml
- ¿Cómo agrego el relleno a un mapa de bits y un color en una lista de capas
- Cómo crear una flecha que mira hacia la derecha usando xml formas en android?
- Cómo obtener la forma redonda en Android
- Forma rectangular con dos colores sólidos
- Forma dibujable como fondo, una línea en la parte inferior
- Cómo dibujar triángulo lleno en el lienzo android
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>
- ¿Por qué la reflexión ralentiza el teléfono Android
- Proguard ParseException con Predeterminado proguard.cfg en Android