3
안드로이드에 원추형 그래디언트를 설정할 수 있습니까? 이 그림에서 처럼 :안드로이드에 원추형 그래디언트가있는 원
http://www.astutegraphics.com/images/blog/tutorials/how_to_create_true_gears_18_oct_2011/29.png
안드로이드에 원추형 그래디언트를 설정할 수 있습니까? 이 그림에서 처럼 :안드로이드에 원추형 그래디언트가있는 원
http://www.astutegraphics.com/images/blog/tutorials/how_to_create_true_gears_18_oct_2011/29.png
확실히하는 SweepGradient는 다음 캔버스에 함께 원을 그립니다 사용합니다.
예제는 here입니다. 재미있어! 당신이 너무 많은 색상이 필요하지 않은 경우
, 당신은 또한 XML을 통해 정의 할 수 있습니다 :
/res/drawable/sweepgradient.xml을 :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:a="http://schemas.android.com/apk/res/android"
a:shape="oval"
a:dither="true">
<gradient a:type="sweep"
a:startColor="#FFFF0000"
a:centerColor="#FF0000FF"
a:endColor="#FF00FF00" />
</shape>
SweepGradient가 기본 구성 요소입니다 그래서 당신은 Javas 편안한 stacktraces에 의존 수 없습니다. 스택 추적 오류가 아닌 경우 먼저 모든 원시 구성 요소를 확인하십시오. 당신이 (뷰의 크기를 조정하는 경우) 중심이 변경되면 SweepGradient를 다시 wan't 수
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.SweepGradient;
import android.view.View;
public class GradientView extends View {
// Edit these values as you want!
private static int[] mColors={Color.RED, Color.GREEN, Color.BLUE};
private Paint mPaint=new Paint();
private boolean mSetShader=false;
public GradientView(Context context) {
super(context);
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
float cX=getWidth()/2F, cY=getHeight()/2F;
if (!mSetShader) {
mPaint.setShader(new SweepGradient(cX, cY, mColors, null));
mSetShader=true;
}
canvas.drawCircle(cX, cY, Math.min(cX, cY), mPaint);
}
}
참고 : 여기에
빠른 예입니다. 나는 단순함을 위해 추가적인 생성자와 onMeasure를 생략했다 ...
고맙지 만, 나는 안드로이드를 처음 사용했다. 위 이미지에서와 같이 정확한 그라데이션을 어떻게 만들 수 있겠습니까? 두 번째 그래디언트를 추가해야합니까? –
두 번째 그라디언트를 추가 할 필요는 없지만 프로그래밍 방식 (no xml)으로 진행하는 것이 좋습니다. 예제 (링크)를보고 세 번째 매개 변수로 배열의 (int) 색상을 제공하십시오. – tilpner
어떤 방법으로 세 번째 매개 변수를 추가해야합니까? 어리석은 질문에 대한 미안. –