Я пытаюсь предотвратить чрезмерное рисование в моем приложении, и в одном из видов корней я хотел бы определить местоположение моих детских просмотров, а затем нарисовать фон, где они нет. По моему мнению, клипирование будет за пределами пути, но то, что я действительно хотел бы сделать, - это не рисовать в определенных местах на экране, где находятся дети. Есть ли хороший способ сделать это?Только рисовать фон, где дети не видны?
EDIT: Так что я не играл с холстом в то время, но я ищу, чтобы сделать что-то вроде этого:
public class ContainerView extends FrameLayout {
private final Paint mBackgroundPaint = new Paint();
private final Path mPath = new Path();
public ContainerView(Context context, AttributeSet attrs) {
super(context, attrs);
mBackgroundPaint.setColor(context.getResources().getColor(R.color.default_background));
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPaint(mBackgroundPaint);
mPath.reset();
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
mPath.addRect(child.getLeft(), child.getTop(), child.getRight(), child.getBottom(),
Path.Direction.CCW); // What direction do I want?
}
canvas.clipPath(mPath);
}
}
clipPath просто не будут делать то, что я хочу, хотя, я не Думаю. Я думаю, что это будет зацикливаться вне пути, и мне нужно сделать клип внутри пути.
Это на самом деле не ответ мой вопрос. Как бы вы кликнули внутри пути? – spierce7
как вы рисуете? – Buddy