public class Player extends ViewGroup {
    private RectF rect = new RectF();
    private Paint paint;
    public Player(Context context,String pname) {
        super(context);
        setWillNotDraw(false);
        paint=new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setStyle(Style.FILL);
        paint.setColor(getResources().getColor(R.color.red));
    }
    public void onDraw(Canvas canvas) {
        canvas.drawRoundRect(rect, 10, 10, paint);
        canvas.drawCircle(rect.centerX(), rect.centerY(), 10, paint);
        //canvas.drawColor(Color.RED);
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int wspec = MeasureSpec.makeMeasureSpec(
                getMeasuredWidth(), MeasureSpec.EXACTLY);
        int hspec = MeasureSpec.makeMeasureSpec(
                getMeasuredHeight(), MeasureSpec.EXACTLY);
        for(int i=0; i<getChildCount(); i++){
            View v = getChildAt(i);
            v.measure(wspec, hspec);
        }
    }
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        rect.set(l, t,r, b);
    }
}
3番目のコマンドは、param rectによって指定されたrect(l、t、r、b)=(412,415,735,754)である赤い長方形を描画します。何らかの理由で、最初の2つのコマンドは影響を与えません。キャンバス!
長方形が実際の長方形であることを確認しました。その値は(412,415,735,754)であり、有効な長方形になります。ペイントをどのように定義したかがわかりますが、なぜそれが描画されないのでしょうか。
真剣に、それを理解しようとして2時間を費やしています...
ありがとう!
ところで、クラスはViewGroupを拡張するため、最終的にはビューコンテナを実装することになります。