3

Androidでキャンバスを使用してpagecurl効果を実装していますが、同じキャンバスにテキスト読み上げ機能を実装する必要があります..したがって、単一のontouchイベントで2つの異なる機能..今まで、onTouchでpagecurl効果を実装しましたが、キャンバスにテキストを取得するのに混乱しています..私は使用しました

 canvas.drawText("Hello world this is experiment", 300,400 , paint);

私のアプリでは、テキストは sqlite から動的に取得されます。タッチ時にキャンバス上のテキストを検出する方法はありますか。

4

1 に答える 1

1

キャンバスにテキストを追加すると、そのテキストが挿入されますRect()

これRect()を Canvas にセットします。

    protected void onDraw(Canvas canvas){
     final String s = "Hello. I'm some text!";

     Paint p = new Paint();
     Rect bounds = new Rect();
     p.setTextSize(60);

     p.getTextBounds(s, 0, s.length(), bounds);
     float mt = p.measureText(s);
     int bw = bounds.width();

     Log.i("LCG", String.format(
          "measureText %f, getTextBounds %d (%s)",
          mt,
          bw, bounds.toShortString())
      );
     bounds.offset(0, -bounds.top);
     p.setStyle(Style.STROKE);
     canvas.drawColor(0xff000080);
     p.setColor(0xffff0000);
     canvas.drawRect(bounds, p);
     p.setColor(0xff00ff00);
     canvas.drawText(s, 0, bounds.bottom, p);
  }

& rectにonToucheventRect()を配置したテキストを簡単に検出できます。

詳細についてはキャンバスについてこれを参照してください:

http://developer.android.com/reference/android/graphics/Canvas.html

于 2013-01-22T06:27:41.230 に答える