2012-09-24 3 views
4

Android의 캔버스에서 간단한 원을 그립니다. 이제 그라디언트 색상으로 채울 필요가 있지만 실제로는 부드럽지 않습니다. 이는 내가 무엇을했는지 :Android 부드러운 그라디언트

protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    rectF.set(20, 20, this.get_Width() - this.get_Width()/10, this.get_Width() - this.get_Width()/10); 
    RadialGradient gradient = new RadialGradient(200, 200, 200, 0xFFFFFFFF, 
      0xFF000000, android.graphics.Shader.TileMode.CLAMP); 
    Paint mPaint = new Paint(); 
    mPaint.setDither(true); 
    mPaint.setShader(gradient); 
    canvas.drawCircle(getWidth()/2, getHeight()/2, getWidth()/3, getGradient()); 
    invalidate(); 
} 

을 그리고이 결과 :

readial gradient

내 질문은 : 그것은 HQ의 방사형 그라디언트를 만들기 위해 어떤 방법이 있나요? 드로잉을 수행하는 View이 포함되어 추가 귀하의 Activity에 다음

+0

내 기억을 새로 고침해야하지만 Android에서 줄무늬는 대부분 픽셀 형식으로 인해 발생합니다. ARGB_888을 사용하고 있는지 확인하고 개선 할 사항이 있는지 확인하십시오. –

답변

1

마지막으로 나는 나의 페인트 객체를 초기화해야합니다

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); 

청소기 국경을합니다.

그리고 @Waqas 대답으로 색상 자체를 더 매끄럽게 만드십시오.

1

시도 :

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    Window window = getWindow(); 
    // Eliminates color banding 
    window.setFormat(PixelFormat.RGBA_8888); 
} 
+0

말씀 드렸듯이 색상이 없지만 테두리는 여전히 이상합니다. –

관련 문제