0

次のプログラムは円 (部分的な円、扇形) を描画しますが、円全体 (完全な円) を描画することを期待しています。円全体を描くには?

カスタム ビューのコード:

public class CentralCircleView extends View {

private Paint circlePaint = new Paint();
{
    circlePaint.setColor(Color.RED);
    circlePaint.setAntiAlias(true);
}

public CentralCircleView(Context context) {
    super(context);
}

public CentralCircleView(Context context, AttributeSet attrs) {
    super(context, attrs);
}


@Override
protected void onDraw(Canvas canvas) {
    canvas.drawCircle(0, 0, 100, circlePaint);
}
}

活動のコード:

public class TransformsActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    CentralCircleView centralCircleView = (CentralCircleView) findViewById(R.id.centralCircleView);
    centralCircleView.setTranslationX(200f);
    centralCircleView.setTranslationY(200f);
    centralCircleView.invalidate();
}
}

レイアウトのコード:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

>

<com.inthemoon.incubation.CentralCircleView
    android:id="@+id/centralCircleView"
    android:layout_marginLeft="0dp"
    android:layout_marginTop="0dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     />

</RelativeLayout>

これが描くものです。残りの円はどこですか?

ここに画像の説明を入力

4

2 に答える 2

4

View の高さは wrap_content に設定されています。つまり、メソッド onMeasure() を実装して、ビューの大きさを RelativeLayout に伝える必要があります。

于 2012-05-06T19:31:31.823 に答える
-5

「ビューの外側」を描画するには、clipRect()メソッドを使用する必要があります。たとえば、私の場合、onDraw()次のように書くことになりました。

protected void onDraw(Canvas canvas) {
    canvas.clipRect(new Rect(-100,-100,100,100), Region.Op.UNION);
    canvas.drawCircle(0, 0, 100, circlePaint);
}
于 2012-05-07T15:41:41.367 に答える