wechselt ich ein Kind Blick habe und ich mag die Leinwand, die einen Kreis zu zeichnen, die „Pixel“ auf der negativen Seite der Achse Umandroid Cliprect mit negativen Werten nicht übergeordnete Ansicht rect
canvas.drawCircle(0, 0, 50f, paint);
hat dazu benutze ich clipRect, das funktioniert einwandfrei und ich sehe den ganzen circle. Jedoch wenn ich requestLayout auf der übergeordneten Ansicht verwenden und ändert die x, y Postion des Kindes Ansicht die negativen SIDs des Kreises sind nicht bitte gezeigt mir raten, was
hier zu tun ist der Code:
package natan.android.TestCanvas;
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
public class TestCanvasActivity extends Activity {
View childView;
RelativeLayout parentView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
childView = new View(this)
{
@Override
protected void onDraw(Canvas canvas) {
canvas.clipRect(-50, -50, 50, 50,android.graphics.Region.Op.REPLACE);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
canvas.drawCircle(0, 0, 50f, paint);
super.onDraw(canvas);
}
};
parentView = new RelativeLayout(this);
parentView.addView(childView);
LayoutParams layoutParms = (LayoutParams)(childView.getLayoutParams());
layoutParms.leftMargin=150;
layoutParms.topMargin=150;
setContentView(parentView);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
LayoutParams layoutParms = (LayoutParams)(childView.getLayoutParams());
layoutParms.leftMargin=100;
layoutParms.topMargin=100;
parentView.requestLayout();
return super.onTouchEvent(event);
}
}