大家好,我点击Listview中的一个项目后,我有一个Activity正在加载。
此活动显示MapView中的位置,如下所示:
<FrameLayout
android:id="@+id/mapContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toEndOf="@+id/imageView"
android:layout_above="@+id/button"
android:layout_below="@+id/imageView"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp" >
<TextView
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Loading Map..." />
</FrameLayout>
问题是,如果他/她点击按钮,我想稍后向用户显示地图。
但是活动加载非常慢,甚至在显示任何内容之前都有黑色的空白屏幕。这看起来非常不专业,似乎是错误的。
我尝试首先制作MapView 不可见,并在用户点击按钮时显示,但在活动开始时加载。
我正在尝试使用以下代码:
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_event);
mapView = new MapView(SingleEvent.this);
mapView.onCreate(savedInstanceState);
com.google.android.gms.maps.MapView.LayoutParams mapParams = new com.google.android.gms.maps.MapView.LayoutParams(com.google.android.gms.maps.MapView.LayoutParams.MATCH_PARENT,220);
mapContainer = (FrameLayout) findViewById(R.id.mapContainer);
mapContainer.addView(mapView, mapParams);
这个正在显示地图,但活动正在加载到黑色空白屏幕,直到我的活动被加载。
有没有办法第一次加载活动,然后点击按钮加载MapView?
我正在尝试做这样的事情:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mapView = new MapView(SingleEvent.this);
mapView.onCreate(savedInstanceState);
com.google.android.gms.maps.MapView.LayoutParams mapParams = new com.google.android.gms.maps.MapView.LayoutParams(com.google.android.gms.maps.MapView.LayoutParams.MATCH_PARENT,220);
mapContainer = (FrameLayout) findViewById(R.id.mapContainer);
mapContainer.addView(mapView, mapParams);
}
},1000);
但是使用该代码,Map不会加载它只显示灰色空白网格。 我认为这是因为 savedInstanceState ,但也许有一个解决方法?
我试图保存Bundle savedInstanceState,加载如上。
答案 0 :(得分:0)
您可以使用MapFragment。在onCreate()
中,您可以将可见性设置为不可见。地图准备就绪后,将调用onMapReady()
,您可以在那里配置地图设置。
答案 1 :(得分:0)
由于硬件加速和大堆,我遇到了同样的问题。我在应用程序级别使用了这些功能。但我从应用程序级别删除它们并在他们使用的活动中使用它们。包含SupportMapFragment
的活动不需要这些功能。所以我把这个代码从Application标签移到了Manifest中的Activity。
问题发生在Manifest
。
<application
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:hardwareAccelerated="false"
android:largeHeap="true">
从Manifest
移除并在Activity
<activity
android:name="com.mycompayname.activities.SignUpActivity"
android:hardwareAccelerated="false"
android:largeHeap="true"/>