2016-12-13 7 views
0

은 내가 float[] positions = {0,1} 설정이SweepGradient는, 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); 

같은 SweepGradient를 작성, 올바르게 (오류)를 작동하지 않습니다.
float[] positions = { 0 , 280f/360 }으로 변경하면 Preview mode of AndroidStudio에 렌더링 오류가 표시되지만 시뮬레이터에서 제대로 작동합니다. 왜 이런 일이 발생합니까? 어떻게 해결할 수 있습니까?

enter image description here

+1

미리보기가 정확하지 않은 경우 잘못 렌더링 될 수 있습니다. 그것은 일반적인 문제이며, 곧 고쳐질 것입니다. 그냥 장치에서 작동 할 때까지 미리보기 오류를 무시하십시오. –

답변

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

positoins 어레이 전체 범위 즉 [0.f, 1.0F]을 걸치는 확인. 이제 미리보기도 올바르게 표시됩니다.

+0

확인하겠습니다. 그러나 3 색 3 색이 아닌 2 색만 원합니다. 어떻게해야합니까? –

+0

마지막 색상은 마지막 마지막 색상과 동일합니다. 그 범위에서 일정한 색상을 보여줍니다. 이미지를 통해 정확한 예상 결과를 공유해 주시겠습니까? – kujeensiti

+0

정말 고마워요. 왜 이런 일이 일어 났는지 이해해. –

0

NULL 일 수 있습니다. colors 배열에서 각 해당 색상의 상대적 위치입니다 (0에서 1.0까지).