0

私はAndroidにかなり慣れていないので、ユーザーが文字を描画し、それを読み取るサービスに接続するボタンを押すと、文字が表示されるアプリを作成しようとしています。

これが私のメインレイアウトです:!(http://i58.photobucket.com/albums/g271/billmoney3/layout_zps71eb45ca.jpg

ユーザーが青い領域に描画できるようにしたいと思います。青い領域をInnerDrawingViewというカスタムビューにしました。ビューとOnTouchListenerを整理する方法についてサポートが必要です。

今私はこのJavaコードを持っています:

public class DoodleActivity extends Activity {

Button confirmButton;
EditText drawingResult;
InnerDrawingView innerView;

// on create
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_doodle);    // main layout

    // where the drawing happens
    innerView = (InnerDrawingView) findViewById(R.id.innerDrawingView1);
    innerView.setOnTouchListener(handleTouch);
            ...
            ...

// handle the touching of the inner view
private OnTouchListener handleTouch = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        drawingResult.setText("O RLY?!");       // just a test
        return true;
    }
}; // end of class

これはそれについて行く正しい方法ですか?InnerDrawingViewクラスにはどのようなタッチリスナーを入れますか?メインアクティビティのonTouch()内からinnerView.onTouch()を呼び出すことはできますか?またはonDraw()メソッド?誰かが私を良いペイントチュートリアルに導くことができれば、それも私を大いに助けてくれるでしょう。

入力ありがとうございます。

4

1 に答える 1

1

「イベント」オブジェクトからxとyをプルする必要があります。次に、コードはニーズによって異なります。新しいポイントを前のポイントに接続するか(セグメントを作成するため)、リストに追加することができます。擬似コード:

public boolean onTouch(View v, MotionEvent event) {
    innerView.submitNewPoint(event.getX()), event.getY());
    return true;
}

マルチタッチイベントを処理する場合は、ポイント数(event.getPointerCount())を取得し、event.getX(i)/event.getY(i)(i-マルチタッチイベントのインデックス)から座標を使用して何かを行う必要があります。点)。

当然のことながら、ポイント/セグメント/の描画を実装する必要がありますか?InnerDrawingViewのリスト。

PSはあなたのフィールドをプライベートにすることを忘れないでください;)

于 2013-02-05T04:37:42.353 に答える