0

異なるパスを使用して図面を作成しましたが、図面全体を移動するにはどうすればよいですか?どうすれば選択して移動できますか?これが私のonDrawメソッドの主要部分です:

Path theSymbol = new Path();

theSymbol.moveTo(0.0F, 0.0F);
theSymbol.lineTo(0.0F, 50.0F);
theSymbol.lineTo(16.666666F, 58.333332F);
theSymbol.lineTo(-16.666666F, 75.0F);
theSymbol.lineTo(16.666666F, 91.666664F);
theSymbol.lineTo(-16.666666F, 108.33333F);
theSymbol.lineTo(16.666666F, 124.99999F);
theSymbol.lineTo(-16.666666F, 141.66666F);
theSymbol.lineTo(0.0F, 150.0F);
theSymbol.lineTo(0.0F, 200.0F);
theSymbol.offset(100.0F, 20.0F);

canvas.drawPath(theSymbol, paint);

それが私が画面に抵抗を引く方法です(それは機能します)。ここで、これらすべてのパスをオブジェクトにする方法が必要です。これは、選択して移動できるものです。

私はシラチャのようないくつかのプロジェクトを見てきましたが、彼らがどのように要素の描画を行っているのかわかりません。

私も何度も検索しましたが、「パス上で何かを動かす」だけです。マイベ私は間違ったことを探しているか、これはこの種のことをする方法ではありません。

誰かが私を正しい方向に向けることができれば本当に感謝しています。

4

1 に答える 1

0

この描画コードをonDraw()カスタムViewサブクラスのメソッドに配置します。次に、フレームワークの他のビューと同じように、レイアウト、アニメーション、およびその他の変換を使用して、画面の周囲に描画を配置できます。何かのようなもの:

public class ResistorView extends View {
    private Path mSymbol;
    private Paint mPaint;

    //...Override Constructors...
    public ResistorView(Context context) {
        super(context);
        init();
    }

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

    private void init() {
        mSymbol = new Path();
        mPaint = new Paint();
        //...Your code here to set up the path,
        //...allocate objects here, never in the drawing code.
    }

    //...Override onMeasure()...
    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //Use this method to tell Android how big your view is
        setMeasuredDimension(width, height);
    }

    //...Override onDraw()...
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawPath(mSymbol, mPaint);
    }        

}

カスタムビューの作成の詳細については、SDKドキュメントをご覧ください。

HTH

于 2012-06-24T23:31:45.203 に答える