我有一个EditView
类,允许用户在编辑模式下在屏幕上移动视图。另外,我在视图后面绘制一个矩形,向用户显示视图区域。一切都按预期工作,但是将绘制样式设置为STROKE
会在移动视图时导致轨迹。如果我将样式留给FILL
,我就没有这个问题。对此有解释吗?
CustomView类:
public class CustomView extends EditView {
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Draw other stuff here
}
@Override
public boolean onTouchEvent(MotionEvent e) {
switch(e.getAction()) {
case MotionEvent.ACTION_MOVE:
if(!super.onTouchEvent(e))
break;
// Code here
case MotionEvent.ACTION_UP:
if(!super.onTouchEvent(e))
break;
// Code here
case MotionEvent.ACTION_DOWN:
if(!super.onTouchEvent(e))
break;
// Code here
}
return true;
}
}
EditView类:
public class EditView extends View {
private Paint p = new Paint();
public EditView(Context context, AttributeSet attrs) {
super(context, attrs);
p.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
if(MainActivity.EDIT_MODE)
canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), p);
}
public void setPaintColor(int color) {
p.setColor(color);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
if(!MainActivity.EDIT_MODE)
return true;
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) getLayoutParams();
switch(e.getAction()) {
case MotionEvent.ACTION_MOVE:
// Change layout params here
return false;
case MotionEvent.ACTION_UP:
setPaintColor(Color.RED);
return false;
case MotionEvent.ACTION_DOWN:
setPaintColor(Color.GREEN);
return false;
default: return true;
}
}
答案 0 :(得分:0)
我设法解决了问题:似乎你必须设置笔画宽度。