¿Puede el color central ser reposicionado en un androide radial-gradiente dibujable?
Es fácil lograr el siguiente gradiente a la izquierda usando colores estándar de inicio, centro y final en un gradiente radial con androide en el que el inicio = amarillo, centro = púrpura y final = azul. Sin embargo, el círculo a la derecha requiere el reposicionamiento del color central. es posible?
- Android LinearLayout Gradiente de fondo
- Android-cómo hacer un gradiente de 4 colores de alta calidad?
- Cómo guardar, exportar o convertir un Android XML Drawable como un archivo de imagen PNG?
- Definición del estilo de origen XML de Gradient / Shape / Corners
- Gradiente de Android en Lollipop no funciona. - API 21
El resultado a la izquierda se puede reproducir con algo como:
<shape android:shape="oval"> <gradient android:endColor="#0000ff" android:gradientRadius="my_radius" android:centerColor="#770077" android:startColor="#00ffff" android:type="radial"/> </shape>
Me pregunto si puedo cambiar el color del centro para lograr el gradiente a la derecha. Creo que la respuesta es no, pero me gustaría ver si alguien ha descubierto una manera en la que hacer esto. ¡Gracias!
- Android: Fondo de degradado de AppBarLayout
- Sweep Gradient: Qué es y sus ejemplos
- Degradado / sombra de Google Now en la barra de estado y la barra de navegación
- Azure Mobile Services SDK disponible a través de Gradle para Android?
- Android gradiente radial
- Degradables de Android: mala calidad de las capturas de pantalla en Eclipse
- Problema con ComposeShader en Android 4.1.1
- Gradle plugin 'com.android.library' no busca en los depósitos personalizados de maven
Lamentablemente, esto no se puede lograr a través de declaraciones XML, sin embargo, es posible hacer a través de código.
Aquí hay un ejemplo de código rápido:
public class MyDrawing extends View { private Paint mPaint; public MyDrawing(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public MyDrawing(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyDrawing(Context context) { super(context); init(); } private void init() { int [] colors = new int[] { 0xff0000ff, 0xff00ff00, 0xffff0000 }; float [] positions = new float[] { 0.4f, 0.7f, 0.9f }; RadialGradient gradient = new RadialGradient(50, 50, 50, colors, positions, TileMode.CLAMP); mPaint = new Paint(); mPaint.setDither(true); mPaint.setShader(gradient); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(circleX, circleY, circleRadius, mPaint); } }
Dos cosas que usted debe prestar atención a:
-
En la matriz de colores, debe especificar el alfabeto (el primero en caracteres). En mi ejemplo, especificé ambos como "ff", significando ninguna transparencia. Si no especifica el alfa, el valor predeterminado será 0.
-
La matriz de posiciones especifica el posicionamiento o fuerza de cada color en el gradiente. Juega con esto para lograr el resultado que estás buscando.
Espero que esto ayude 🙂
- Depuración de Android Studio para el código doInBackground de un AsyncTask
- Android SQLiteException: Error al cambiar la configuración regional de db a 'en_US'