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 在地图上移动。你可以使用 scrollBy() 方法与两个滚动一起移动。由于在创建布局时我没有找到任何可用于更改布局位置的东西,我试图通过使用 scrollBy() 方法来移动它来移动视图。问题是我在画之前就在移动,所以自然什么也没发生。

我设法像这样解决了这个问题。在 onCreate 你 findViewById,并调用绘制地图的方法,在我的例子中是 drawWorldMap(ImageView)。由于我在这里使用的是 scrollBy(),所以在实际绘制所有内容之前,它没有用。Android默认首先调用onCreateView()创建所有视图,然后调用onCreate(),绘制完成后,再次调用onCreateView()。

在最后一次调用时,一切都准备好了,您可以调用 scrollBy() 来滚动以实际移动地图上的位置。所以我的解决方案是,在调用 drawWorldMap() 之后,我使用布尔值将其设置为 true,因此我知道地图已绘制并且卷轴已膨胀,并且在我上次在 onCreateView() 方法中返回后,我只是检查了对于布尔值是真的,如果是,我用scrollBy()移动了滚动的位置。

如果其他人遇到任何问题,我可以在更详细的代码中帮助他,但是由于现在似乎没有人遇到同样的问题,所以我不会太详细(代码方面)。

祝你今天过得愉快..

于 2013-02-06T08:51:18.050 回答