2011-07-12 6 views
0

Androidの質問。 私はカスタムImageViewクラスを作りました。その中には、(キャンバスを使って)特定のピクセルに円を描画するonDrawメソッドがあります。このカスタム画像ビューを使用して画像を開くと、私が描いたサークルに焦点を当てたいと思います(現在の位置にGoogleマップがあるように、フォーカスはあなたの現在の位置に設定されています)Android - onDrawメソッドで描画した円にフォーカスを設定

+0

フォーカスを視覚的に表現したい場合は、実際にフォーカスをImageViewに設定します(wあなたがそれを扱わない限り、何も視覚的にしないでしょうか? – Idistic

+0

イメージビューが表示されていますが、私のサークルを画面の中央に(そしてフォーカスを持って)置いて欲しいです。私のイメージは大きく、スクリーンから外れます(スクロールバーが上下左右に移動します) –

+0

"フォーカス"を与えても、イメージの位置を変えることはできません。現在イメージが(パンされて)どこに変換されているかにかかわらず、円をディスプレイの中央に維持するように思えますか? – Idistic

答えて

0

マップサーバーは、Googleがタイルのカスタマイズされたセットを提供してセンターが適切に表示されるようにします。新しいバージョンは当然ベクタベースなので、ビューを描画するだけで必要な場所に集中されます。あなたはおそらく、あなたが適切に

あなたのタイルをレイアウトすることができるように

は、おそらくでframeLayout

public class myMapFrameLayout extends FrameLayout { 

オーバーライドonDrawまたはonDispatchDrawのいずれかを、独自のコンテナクラスを作成して必要なアプリケーションの詳細を知らなくても

あなたが必要とするx、yが画面の中央にくるようにビットマップを描画する位置を決め、whiに依存して必要な座標の空白を埋めるために必要な他のタイルを描画しますCH方法は、タイルは、同じサイズ

4 X 5

あるすべてその周囲のタイルと実際の画面より大きい仮想スクリーンの

思いを中心に取得するために移動されましたXは、ディスプレイの大きさであり、あなたがタイルを移動するためにどの方法を把握する必要がある現在のタイル、および他のタイル1,2,3,4,5を表していると仮定すると、

、 6,7、または8の場合は、移動による空きスペースを埋める必要があります

タイル+ xを0,0から描画する必要がある場合は、タイル4が必要で、0から描画+ yは2の一部を意味し、両方とも1,2,4がすべて必要なので、組み合わせを見つけ出し、必要なタイルをロードし、それぞれの描画位置を把握します。それは、センターを表示した新しい仮想タイルを表示します。

これは、クライアント側のビットマップ描画方法で考えているほど効率的です。UPDATE

あなたのコメントは、あなたがこの問題のビットであることを行っている唯一の非常に大規模なイメージを持って示しているので

もしあなたがのサイズよりエッジに近いものとして必要なY、X、表示

なし以下の画面は500×500だったし、あなたのイメージだった場合、あなたはまだあなたがそれを必要な場所だけ画面を測定し、

ので中央に、ターゲットのxとyとのビットマップを描画した画像を描画することができます5000x5000であり、中心は位置x = 1000y = 1000にあり、次に

drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) 

ソース矩形を1000-250,1000-250,500,500あろうとdst矩形が0,0,500,500

250は、中心Xと表示の中心Yであろう場合、1000がある対象X/y座標、500は表示サイズです。

ここでも、あなたは無限のマップタイル代わり

あなたがlayoutparamsを使用して、あなたのでframeLayoutを大型化だけでキャンバスを翻訳可能性を持っていけないので、あなたがあなたの画面に空白ポリゴンを持ってしようとしている縁であるターゲットとxとyはキャンバスをx、yの中心に合わせるために、より実績のある類似した計算を使用する必要があります。

イメージが実際には大量のメモリを使用しています大きな

+0

返事をありがとう。私の例では、1つのイメージ(1つのマップタイルを意味します)があります。そして、この1画像/タイルは画面サイズよりも大きい。だから現在、私は左右にスクロールして、私の位置のドットを見つけるために上下に動かさなければならない。 –

+0

x、yが左上隅にあるなら、あまりうまく動かないだろう。あなたがそれを行うことができる唯一のことは、私が想定しているイメージを過大にしていることです。上記の答えを変更してください。 – Idistic

+0

アドバイスをいただきありがとうございます。私はこの問題を回避しようとするか、それを解決するための新しい解決策を考えます –

関連する問題