2016-12-13 1 views
0

je crée un SweepGradient comme celui-ciSweepGradient ArrayIndexOutOfBoundsException

int[] colors = { Color.RED, Color.BLUE }; 
// float[] positions = {0,1}; => this will work without error 
float[] positions = { 0 , 280f/360 }; 
SweepGradient gradient = new SweepGradient(width/2, height/2, colors, positions); 

Quand je mis float[] positions = {0,1}, il fonctionne correctement (pas d'erreur).
Quand je change à float[] positions = { 0 , 280f/360 }, dans le Preview mode of AndroidStudio il affiche une erreur de rendu mais dans le simulateur cela fonctionne bien Pourquoi ceci s'est-il passé? Comment puis-je le réparer?

enter image description here

+1

La prévisualisation est inexacte, le rendu peut être incorrect. C'est un problème commun, et ne va pas être réparé bientôt. Juste ignorer les erreurs de prévisualisation jusqu'à ce qu'il fonctionne sur l'appareil –

Répondre

1
int colors[] = {Color.RED, Color.BLUE, Color.BLUE}; 
    float positions[] = {0.f, 280f/360, 1.f}; 

Assurez-vous que le tableau positoins couvre gamme à savoir [0.F, 1.0f]. Maintenant, l'aperçu sera également affiché correctement.

+0

Je vais le vérifier, mais je veux seulement 2 couleurs et non pas trois couleurs. comment puis-je l'atteindre –

+0

Veuillez noter que la dernière couleur est la même que l'avant-dernière couleur. Cela montrera la couleur constante dans cette gamme. Pourriez-vous partager le résultat exact par image? – kujeensiti

+0

merci beaucoup. Je comprends pourquoi cela s'est passé –

0

Peut être NULL. La position relative de chaque couleur correspondante dans le tableau de couleurs, commençant par 0 et se terminant par 1.0.