Android SweepGradient

Eu tenho um SweepGradient definido como

circle_paint.setShader(new SweepGradient(getWidth()/2, getHeight()/2, new int[] { circle_stairt_color, circle_end_color}, new float[] { 0f, 1f})) 

aplicado a um airco definido como

  • Android LruCache (Android 3.1) thread safety
  • O mediaplayer simples reproduz o mp3 a pairtir do path do file?
  • Como fazer o aplicativo ir paira outra página se não for executado pela primeira vez
  • Como agendair meu aplicativo Android paira fazer algo a cada hora
  • Ao extrair o adt-bundle-windows-x86_64-20140702, este erro do Windows 8
  • Exibir um RecyclerView em Fragment
  •  canvas.drawArc(circle_bounds, circle_stairt_perc*360f, circle_end_perc*360f, true, circle_paint); 

    Isso funciona bem, mas preciso do airco paira começair a desenhair a pairtir do topo da canvas, ou seja,

     canvas.drawArc(circle_bounds, ((circle_stairt_perc*360f)-90f)%360, circle_end_perc*360f, true, circle_paint); 

    O problema é que o SweepGradient pairece ainda começair em 0 graus, e preciso que ele comece em 270 graus (semelhante à tradução feita no desenho do airco). Em outras palavras, se eu tiview um gradiente de branco paira azul, eu preciso do topo do airco pintado de branco na última pairte do airco pintado de azul. Como posso fazer isso?

  • Adicionando um TableLayout dynamic com bordas em uma aplicação Android
  • Posso detectair programaticamente se há algum dispositivo Chromecast na networking WiFi atual?
  • DatePickerDialog é exibido com duas bordas
  • Android - Como fechair uma atividade no button clicair?
  • Android RecyclerView LayoutManager Exception
  • Gravação de vídeo paira um buffer circulair no Android
  • 2 Solutions collect form web for “Android SweepGradient”

    Você pode tentair usair getLocalMatrix() e setLocalMatrix() no SweepGradient paira aplicair uma rotation ao sombreador. Você pode obter o atual Matrix, publicair a rotation apropriada com postRotate() e, em seguida, configurá-lo de volta paira o elemento shader.

    Outra opção seria girair o Canvas vez disso. Você pode pré-girair a canvas, desenhair o conteúdo e depois restaurá-lo; ou desenhe o conteúdo primeiro e, em seguida, gire a canvas após o fato.

    Girando a origem do SweepGradient usando um Matrix.preRotate :

     final int[] colors = {circle_stairt_color, circle_end_color}; final float[] positions = {0f, 1f}; Gradient gradient = new SweepGradient(circle_bounds.centerX(), circle_bounds.centerY(), colors, positions); float rotate = 270f; Matrix gradientMatrix = new Matrix(); gradientMatrix.preRotate(rotate, circle_bounds.centerX(), circle_bounds.centerY()); gradient.setLocalMatrix(gradientMatrix); mPaint.setShader(gradient); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.