我有一个活动,其中有3个不同视图中的复选框。这些复选框用于选择颜色。
在DrawingView类中,我必须使用选定的颜色在画布上绘制。我想要的是从活动中传递一个整数值到视图类,并相应地设置绘画的颜色。我尝试使用getter和setter,但我得到的是黑色。我认为这是因为颜色在构造函数中被设置,当我勾选任何框时它不会改变。
请参阅下面的代码更新:此处 代码:
MainActivity:在这里选择颜色/复选框。并且绘制将在此活动的布局中完成。
在DrawingView类中,我必须使用选定的颜色在画布上绘制。我想要的是从活动中传递一个整数值到视图类,并相应地设置绘画的颜色。我尝试使用getter和setter,但我得到的是黑色。我认为这是因为颜色在构造函数中被设置,当我勾选任何框时它不会改变。
请参阅下面的代码更新:此处 代码:
MainActivity:在这里选择颜色/复选框。并且绘制将在此活动的布局中完成。
carImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
drawingView=new DrawingView(carImageView.getContext());
drawingView=new DrawingView(carImageView.getContext(),null);
drawingView.setColor(color);
return false;
}
});
scratchesCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b)
{
color=1;
chipsCb.setChecked(false);
dentsCb.setChecked(false);
}
}
});
chipsCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b)
{
color=2;
scratchesCb.setChecked(false);
dentsCb.setChecked(false);
}
}
});
dentsCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b)
{
color=3;
chipsCb.setChecked(false);
scratchesCb.setChecked(false);
}
}
});
}
视图类:
public DrawingView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mPaint=new Paint();
if(color==1)
mPaint.setColor(Color.RED);
else if(color==2)
mPaint.setColor(Color.BLUE);
else if(color==3)
mPaint.setColor(Color.GREEN);
this.context=context;
mPath=new Path();
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.MITER);
mPaint.setStrokeWidth(5f);
}
public void setColor(int color){
this.color=color;
}
public int getColor(){
return this.color;
}
编辑
我并不一定想使用完全相同的代码。我只想在选择复选框时改变绘画颜色,以便能够在图像视图上绘制。欢迎采用任何其他方法。