动画在 Google 地图 Android 上不工作

Animation not working On Google Map Android

我正在创建一个类似应用程序的朋友追踪器。它由下面描述的 Animation 组成: 当点击标记时,一个从屏幕底部向上滑动的类似菜单出现在屏幕的一半上,再次点击标记它会向下滑动。

Slide_up 标记点击动画图片:

我想要:在地图上的任意位置单击时向下滑动菜单。意味着当菜单打开时,我希望它可以通过单击标记或地图上的任何位置来关闭。 请帮助我实现它。

调用标记点击的动画代码:

public void animation(Marker m, LatLng loc) {
        Fragment f = getFragmentManager().findFragmentByTag(LIST_FRAGMENT_TAG);

//        googleMap.animateCamera(CameraUpdateFactory.zoomTo(10));
        googleMap.setMyLocationEnabled(true);

        googleMap.getUiSettings().setAllGesturesEnabled(true);
        googleMap.getUiSettings().setRotateGesturesEnabled(false);

        if (f != null) {
            getFragmentManager().popBackStack();
        } else {
            getFragmentManager()
                    .beginTransaction()
                    .setCustomAnimations(R.anim.slide_up,
                            R.anim.slide_down,
                            R.anim.slide_up,
                            R.anim.slide_down)
                    .add(R.id.list_fragment_container, BaseMapSlidingFragment
                                    .instantiate(this, BaseMapSlidingFragment.class.getName()),
                            LIST_FRAGMENT_TAG
                    )
                    .addToBackStack(null).commit();

            googleMap.getUiSettings().setAllGesturesEnabled(false);

        }}

动画文件: slide_down.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:propertyName="yFraction"
            android:valueType="floatType"
            android:valueFrom="0.58"
            android:valueTo="1.0"
            android:duration="@android:integer/config_mediumAnimTime"/>
    <objectAnimator
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:propertyName="alpha"
            android:valueType="floatType"
            android:valueFrom="1"
            android:valueTo="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_up.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:propertyName="yFraction"
            android:valueType="floatType"
            android:valueFrom="1.0"
            android:valueTo="0.58"
            android:duration="@android:integer/config_mediumAnimTime"/>
    <objectAnimator
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:propertyName="alpha"
            android:valueType="floatType"
            android:valueFrom="0.58"
            android:valueTo="1.0"
            android:duration="@android:integer/config_mediumAnimTime"/>
</set>

您应该在布局上有一个 onClickListener,方法是单击您的菜单应该下降的位置。

然后制作一个布尔变量(菜单未打开时为false,菜单显示时为true)记录菜单状态(菜单是打开还是关闭)。

那么你只需要做以下两件事:

  1. 当单击 FrameLayout 时,通过检查布尔变量值检查菜单是否打开。

  2. 如果菜单正在显示,那么也可以在那里调用动画方法。

我想这个问题现在应该已经解决了。

如果这不起作用,请在下方评论告诉我。