动画在 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)记录菜单状态(菜单是打开还是关闭)。
那么你只需要做以下两件事:
当单击 FrameLayout 时,通过检查布尔变量值检查菜单是否打开。
如果菜单正在显示,那么也可以在那里调用动画方法。
我想这个问题现在应该已经解决了。
如果这不起作用,请在下方评论告诉我。
我正在创建一个类似应用程序的朋友追踪器。它由下面描述的 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)记录菜单状态(菜单是打开还是关闭)。
那么你只需要做以下两件事:
当单击 FrameLayout 时,通过检查布尔变量值检查菜单是否打开。
如果菜单正在显示,那么也可以在那里调用动画方法。
我想这个问题现在应该已经解决了。
如果这不起作用,请在下方评论告诉我。