사용자가 터치 입력만으로 색상을 선택할 수있는 색상 선택 도구를 만들려고합니다. SaturationShade가 나에게 가운데에서 whiting을주는 동안 내 색조 쉐이드는 색상환에 색조를 제공합니다. SweepGradient에는 반경이 필요하지 않지만 Radial Gradient에는 반경이 필요합니다. 그러나, 나는 창조의 시간에 폭과 높이의 실제 값을 얻을 수 없을 때 이것을 부른다. 대신 명시된 값을 선택합니다. 해당 정보를 사용할 수있을 때 반경을 설정할 수있는 중간 단계가 있습니까? 아니면 다른 방법을 시도해야합니까?RadialGradient (사용자 정의보기)
private Paint mPaint;
private int[] mColors;
private int viewWidth = 120;
private int viewHeight = 120;
private int centerX = 60;
private int centerY = 60;
private int padding = 10;
public ColorWheelView(Context context) {
super(context);
onInitialize();
// TODO Auto-generated constructor stub
}
private void onInitialize()
{
mColors = new int[] {
0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00,
0xFFFFFF00, 0xFFFF0000
};
Shader totalShade = new SweepGradient(0, 0, mColors, null);
Shader hueShade = new SweepGradient(0, 0, mColors, null);
Shader saturationShade = new RadialGradient(0, 0, (float)viewWidth-padding, 0xFFFFFFFF, 0x00FFFFFF, Shader.TileMode.CLAMP);
//Shader valueShade;
totalShade = new ComposeShader(hueShade, saturationShade, PorterDuff.Mode.SCREEN);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setShader(totalShade);
mPaint.setStyle(Paint.Style.FILL);
}
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld)
{
super.onSizeChanged(xNew, yNew, xOld, yOld);
viewWidth = xNew;
viewHeight = yNew;
centerX = viewWidth/2;
centerY = viewHeight/2;
}
protected void onLayout(boolean changed, int left, int top, int right, int bottom)
{
super.onLayout(changed, left, top, right, bottom);
viewWidth = right - left;
viewHeight = bottom - top;
centerX = viewWidth/2;
centerY = viewHeight/2;
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int measuredHeight = measureHeight(heightMeasureSpec);
int measuredWidth = measureWidth(widthMeasureSpec);
setMeasuredDimension(measuredWidth, measuredHeight);
}
내가 달성하려는 것을 파악하는 데 도움이된다면이보기를 다양한 크기의 화면에 사용할 수 있도록하려고합니다. 그래서 장치에서 정보가 필요합니다.
문제가 해결되었습니다. onStart()가 호출 될 때 호출 된 또 다른 함수를 제공합니다. – Arzeimuth