2

私は描画用のアプリケーションを開発してきましたが、いくつかの問題があります。指で描画する方法はすでに行われていますが、ユーザーが一般的なテキストラベルを に書き込むことができるようにする必要がありますView。だから、私のコードを見てください:

public class PainterView extends View implements DrawingListener {

    private Painter painter;

    private Bitmap bitmap;
    private Paint bitmapPaint;
    private Path path;
    private Paint paint;

    public PainterView(Context context, Painter painter) {

        super(context);
        this.painter=painter;
        this.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                float x = event.getX();
                float y = event.getY();

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        PainterView.this.painter.touchStart(x, y);
                        break;
                    case MotionEvent.ACTION_MOVE:
                        PainterView.this.painter.touchMove(x, y);
                        break;
                    case MotionEvent.ACTION_UP:
                        PainterView.this.painter.touchUp();
                        break;
                }

                return true;
            }

        });
        this.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
                Log.e("event", "click");
            }

        });
        this.setOnLongClickListener(new OnLongClickListener() {
            public boolean onLongClick(View v) {
                Log.e("event", "long");
                return true;
            }

        });  
    }

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
    }

    protected void onDraw(Canvas canvas) {
        if (bitmap!=null) {
            canvas.drawBitmap(bitmap, 0, 0, bitmapPaint);
            canvas.drawPath(path, paint);
        } 
    }

    public void onPictureUpdate(Bitmap bitmap, Paint bitmapPaint, Path path, Paint paint) {

        this.bitmap=bitmap;
        this.bitmapPaint=bitmapPaint;
        this.path=path;
        this.paint=paint;
        invalidate();
    }

    public void setPainter(Painter painter) {
        this.painter=painter;
    }
}

これは描画用のコードです。描画のプロセスはPainterクラスにあります。そのため、ユーザーが簡単なテキストを書けるようにする必要があります。長いクリックを使用してそれを実行できると思いました-ユーザーが長いクリックをすると、キーパッドが開き、ユーザーはテキストを入力できます。しかし、それはうまくいきません!ログに文字列がありません。

私の問題についてのアドバイスや、必要なものを実現する方法を教えてください。

4

1 に答える 1

0

OnTouchListenerあなたがタッチイベントを消費していると確信していますreturn true。試してみてくださいreturn super.onTouch(v, event)

于 2012-06-15T12:58:45.657 に答える