【问题标题】:Animation not working On Google Map Android动画在 Google Map Android 上不起作用
【发布时间】:2016-02-18 10:07:51
【问题描述】:

我正在创建一个类似 app 的朋友追踪器。它由如下描述的动画组成: 当点击marker时,一个从屏幕底部向上滑动的菜单会出现在屏幕的一半上,再次点击marker它会向下滑动。

点击标记时上滑动画图像:

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

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

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>

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

    如果这不起作用,请通过下面的评论告诉我。

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多