0

私はこの質問に対する答えを見つけることができませんでした.おそらく簡単です..

画面に大きな画像 (世界地図) があり、地図上で水平方向および垂直方向に移動できます。問題は、マップを表示するアクティビティを開始すると、ディスプレイのデフォルト位置が 0,0 の位置になるため、画像の先頭が表示されることです。

_______________
| screen |     |
|________|     |
|              |
|     MAP      |
|______________|

_______________
|      ______  |
|     |screen| |
|     |______| |
|              |
|     MAP      |
|______________|

写真が示すように、これは私がやりたいことであり、ディスプレイのデフォルトビューを変更して、マップ上の別の場所に表示するようにします..

私のレイアウトはこんな感じです..

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/worldLinearLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".WorldMapActivity" >

    <org.kema.view.VScroll
        android:id="@+id/vScroll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <org.kema.view.HScroll
            android:id="@+id/hScroll"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <RelativeLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/relativeLayoutWorldMap"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

                <ImageView
                    android:id="@+id/imageViewWorldMap"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:adjustViewBounds="false"
                    android:contentDescription="World map"
                    android:src="@drawable/contacts_map" />
            </RelativeLayout>
        </org.kema.view.HScroll>
    </org.kema.view.VScroll>

</LinearLayout>

それを行う方法はありますか?ありがとうございました

編集:明確にするために、私の質問は画面上での移動に関するものではありません。画面に表示されたときにデフォルトビューの位置を変更するだけで、すでに解決しています。

4

1 に答える 1

0

世界地図を描いた後、vScroll と hScroll を使用して地図を移動しました。Uは scrollBy() メソッドで両方のスクロールで移動できます。レイアウトの作成時にレイアウトの場所を変更できるものが見つからなかったので、 scrollBy() メソッドを使用してビューを移動して移動しようとしていました。問題は、描かれる前に動いていたので、当然何も起こりませんでした。

私はこのようにこれを解決することができました。onCreate で ViewById を見つけ、マップを描画するメソッドを呼び出します。私の場合は drawWorldMap(ImageView) です。ここで scrollBy() を使用していたので、すべてが実際に描画される前に、機能しませんでした。Android は、最初にデフォルトで onCreateView() を呼び出してすべてのビューを作成し、次に onCreate() を呼び出します。すべての描画が完了したら、onCreateView() がもう一度呼び出されます。

最後の呼び出しで、すべての準備が整い、スクロールに scrollBy() を呼び出して、マップ上の位置を実際に移動できます。したがって、私の解決策は、 drawWorldMap() が呼び出された後、ブール値を使用して true に設定したため、マップが描画され、スクロールが膨張したことがわかり、前回 onCreateView() メソッドに戻った後、単純にチェックしましたブール値が true の場合は、scrollBy() でスクロールの位置を移動しました。

他の誰かが問題に遭遇した場合、私はより詳細なコードで彼を助けることができますが、今のところ誰も同じ問題を抱えているようには見えないので、あまり詳しくは説明しません (コードに関して)。

良い1日を..

于 2013-02-06T08:51:18.050 に答える