2010-12-14 12 views
0

私はキャンバス上にいくつかのビットマップを描画し、MotionEventsを使用してそれらをドラッグできます。Android:Draggable Toast、Or Alternative?

各項目を押すと、ACTION_MOVE中にドラッグされているビットマップの動きを追跡するToastまたはToastのようなミニ情報パネルを表示したいと思います。 「Toast」はACTION_DOWNに表示され、ACTION_UPで消滅します。

Toastを使用する際の問題点は、持続時間を与えなければならず、表示された時点でその位置を変更できないということです。 ACTION_MOVEごとにトーストを殺して、現在の座標にすぐに新しいトーストを表示できないかぎり? (申し訳ありませんが、この時点で大声で考えて、私の開発マシンにテストすることはできません...)

これを達成するために他にどのようなオプションがあるかわかりません。コミュニティから。

答えて

1

これがうまくいけば、ちょうどそれを取り上げて、コンパイルすることさえできます!

private boolean mDragging = false; 
private float mTouchX = 0, mTouchY = 0; 
private Paint mTextPaint = new Paint();//need to set this up in onCreate! 

public boolean onTouchEvent(MotionEvent event) 
{ 
    mTouchX = event.getX(); 
    mTouchY = event.getY(); 

    if(event.getAction() == ACTION_DOWN) 
    { 
    mDragging = true; 
    } 
    else if(event.getAction() == ACTION_UP) 
    { 
    mDragging = false; 
    } 

    return true; 
} 

protected void onDraw (Canvas canvas) 
{ 
    /* Put all your bitmap drawing here. */ 

    /* Draw some info text on top of everything else. */ 
    if(mDragging) 
    { 
    String text = mTouchX + ", " + mTouchY; 
    canvas.drawText(mTouchX, mTouchY + 50, text, mTextPaint); 
    } 
} 
+0

ありがとうジョシュ、私はこれをできるだけ早く試してみます。しかし、私がonTouchに表示したい情報は、ただ一つのテキストより複雑です。これは、実際には、オブジェクトがタッチされたりドラッグされたりするための一連の統計です。だから、私はカスタムビューのいくつかの並べ替えを作成し、drawTextの代わりに描画する必要があると思います。 問題はいくらですか? – JimBadger

+0

カスタムビューを作成する必要はありません。 Canvas描画メソッドを使用して、星や必要なものを描画することができます。 – kgiannakakis

+0

ええ、私はそれを行ってあげるよ。みんなありがとう。 – JimBadger

1

あなたがすでに言及した理由のためにトーストはこの場合適切ではありません。 Canvas上に領域を定義し、drawTextを使用してそこにメッセージ文字列を描画する方がよいでしょう。これをonDrawメソッドに入れ、メッセージボードのテキストまたは位置を更新する必要があるときはいつでもinvalidateを呼び出します。

+0

非常にお答えいただき、非常に役に立ちました。ジョシュの答えもあまりにも、私は彼の答えの下のコメントでそれをさらに議論したいと思います。 – JimBadger