Android LinearGradient y extraño posicionamiento relativo

Tengo el código siguiente con un LinearGradient, que se parece mucho al igual que todos los otros ejemplos hacia fuera allí.

public class CustomColourBar extends View { public CustomColourBar( Context context, AttributeSet attribs ) { super( context, attribs ); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(170, 40); } @Override protected synchronized void onDraw( Canvas canvas ) { int height = this.getMeasuredHeight(); int width = this.getMeasuredWidth(); LinearGradient shader = new LinearGradient( 0, 0, 0, height, Color.RED, Color.YELLOW, Shader.TileMode.CLAMP ); Paint paint = new Paint(); paint.setShader(shader); RectF fgRect = new RectF( 0, 0, width, height); canvas.drawRoundRect(fgRect, 7f, 7f, paint); } } 

En un diseño, esto produce lo siguiente, que es casi correcto:

http://i.stack.imgur.com/Pqbx1.png

Sin embargo, cuando otras cosas cambian la posición Y de mi punto de vista, va mal:

http://i.stack.imgur.com/bnyeU.png

El LinearGradient utiliza la posición absoluta respecto a la vista superior (es decir, el diálogo). No puedo por la vida de mí averiguar – ¿por qué?

¡Gracias!

Robar

Yo tuve el mismo problema. Las posiciones en el sombreador no son de forma sino de lienzo.

Por lo tanto usted necesita dibujar sus formas en el lienzo siempre alrededor del origo y traducir el lienzo con la posición deseada.

Por ejemplo:

NO HAGA:

 canvas.drawCircle(posx, posy, radius); 

HACER:

 canvas.save(); canvas.translate(posx, posy); canvas.drawCircle(0,0,radius); canvas.restore(); 

Espero que ayudó! 😉

En el archivo de manifiesto android, elija la actividad que está utilizando y asegúrese de que la propiedad configChanges de la misma tenga orientación marcada

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.