我有一个MapFragment占据了我的Activity
的整个背景。 map fragment
位于RealtiveLayout
中,因此我可以将其他视图放置在所述地图的顶部。 Button
是放在地图顶部的视图之一。
按下Button
时,一个不可见的LinearLayout
开始从屏幕底部到其位置(或从其位置到屏幕底部)滑动动画。
这些动画开始时出现问题。随着LinarLayout
自身向上或向下移动,随着有效地图的缩小或放大,覆盖的地图会不断调整其内容的大小。这使一些非常不稳定的视觉效果。
有没有一种方法可以阻止在动画执行时重新渲染地图?移动版式和地图一样都是RelativeLayout
的子代,因此我认为这与地图被推/拉无关。
但是再说一次,我是android开发的新手,所以如果我遗漏了一些明显的东西,对不起。
Activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
tools:context=".CreateEvent2Activity"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/createEventLayout">
// An abreviated customized toolbar
<android.support.v7.widget.Toolbar
android:id="@+id/create_toolbar" />
// The Map Fragment
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:uiRotateGestures="true"
map:uiZoomGestures="true"
android:layout_below="@id/create_toolbar"/>
// The layout where the view that triggers the animation is inserted
<LinearLayout
android:id="@+id/event_inputs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:gravity="center_vertical"
android:orientation="vertical"
android:layout_below="@id/create_toolbar">
...
</LinearLayout
// The layout that gets animated
<LinearLayout
android:id="@+id/suggestions_slider"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/event_inputs"
android:background="@color/white_background_dark"
android:orientation="vertical">
<Button
android:id="@+id/my_location"
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:background="@color/white"
android:drawablePadding="8dp"
android:drawableStart="@drawable/baseline_my_location_black_18"
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:text="Use my current location"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textSize="14sp" />
<ListView
android:id="@+id/places_suggestions"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/my_location"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:background="@color/white" />
</LinearLayout>
</RelativeLayout>
向上滑动代码:
LinearLayout suggestions = findViewById(R.id.suggestions_slider);
suggestions.setVisibility(View.VISIBLE);
suggestions.animate().translationY(0);
幻灯片dowm代码:
LinearLayout suggestions = findViewById(R.id.suggestions_slider);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenHeight = displayMetrics.heightPixels;
//screen height - height of the view touching above the slider
suggestions.animate().translationY(screenHeight - parent.getHeight());
我希望我可以显示地图在做些什么,但是我不确定如何做。如果我需要编辑更多信息,我会。先感谢您!