Android(Gingerbread):滑出SupportMapFragment在动画期间隐藏地图

时间:2013-06-21 12:50:25

标签: android google-maps android-animation

enter image description here

如上图所示,我想滑出LayoutA这是一个谷歌地图SupportMapFragment,以显示LayoutB

中的一些设置

我在LayoutA上使用translationX()实现了这一点,它仅适用于API11 +。但是,我在API10中找到了使用TranslationAnimation的解决方法,但在动画运行时隐藏了地图本身。 currentPosition和ZoomIn / ZoomOut的MapFragement按钮按预期显示,但地图本身隐藏在TranslationAnimation的开头,如果动画结束,则会再次显示。

这是片段的布局(地图在相对布局中,我改变了相对布局的位置)

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"

  //LAYOUT B
  <RelativeLayout  
    android:id="@+id/back_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


  //LAYOUT A
  <RelativeLayout           
    android:id="@+id/front_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/transparent" >

    <fragment
        android:id="@+id/map_screen"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/map_screen_bottom_bar"
        class="com.google.android.gms.maps.SupportMapFragment">
    </fragment>

我的动画

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR1) {
((RelativeLayout) findViewById(R.id.front_frame)).animate()
    .translationX(-1 * mScreenWidth);
} else {

TranslateAnimation slideOut = new TranslateAnimation(0, -1
    * mScreenWidth, 0, 0);
slideOut.setDuration(getResources().getInteger(
    R.integer.animation_transistion_length_short));
slideOut.setFillEnabled(true);
//slideOut.setFillAfter(true);

slideOut.setAnimationListener(new AnimationListener() {

    @Override
    public void onAnimationStart(Animation animation) {}


    @Override
    public void onAnimationRepeat(Animation animation) {}


    @Override
    public void onAnimationEnd(Animation animation) {
        RelativeLayout mView = (RelativeLayout) findViewById(R.id.front_frame);
        int[] pos = { mView.getLeft() - mScreenWidth,
            mView.getTop(), mView.getRight(),
            mView.getBottom() };

        mView.layout(pos[0], pos[1], pos[2], pos[3]);

    }
});

((RelativeLayout) findViewById(R.id.front_frame))
    .startAnimation(slideOut);

}

这是一张糟糕的照片,在动画中拍摄。用于定位和缩放的按钮是动画的。如果动画结束,则地图本身不会显示但会显示。任何想法? enter image description here

0 个答案:

没有答案