如何在不调整地图片段大小的情况下为视图设置动画?

时间:2018-07-24 19:02:52

标签: android google-maps android-fragments animation android-animation

我有一个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());

我希望我可以显示地图在做些什么,但是我不确定如何做。如果我需要编辑更多信息,我会。先感谢您!

0 个答案:

没有答案