动画在Google Map Android上无效

时间:2015-11-17 05:59:40

标签: android android-fragments android-animation google-maps-markers google-maps-android-api-2

我正在创建一个像app一样的朋友跟踪器。它由以下动画描述组成: 当点击标记时,屏幕底部的向上滑动菜单会显示屏幕的一半,再次点击标记会向下滑动。

标记点击

幻灯片动画图片:

Updated fiddle here

我想:点击地图上的任意位置时向下滑动菜单。意味着菜单启动时,我希望它可以点击标记或地图上的任何位置。 请帮助我实现它。

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

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>

1 个答案:

答案 0 :(得分:2)

你应该在布局上有一个onClickListener,点击你的菜单应该关闭。

然后创建一个布尔变量(如果菜单未打开则为false,菜单显示时为true),这将记录菜单的状态(菜单是打开还是关闭)。

然后你只需要做两件事:

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

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

  3. 我想现在应该解决这个问题了。

    请通过以下评论告诉我这是否有效。