0

我有一个显示 3 个片段的活动, a MapActivity, aListActivity和 a (normal) DetailsActivity。和放置在 MapActivity 上ListActivityDetailsActivity

有一个用动画隐藏 ListActivity 和 DetailsActivity 的功能,onAnimationEnd()我为隐藏的 Activity 设置了一个新布局。

我面临的问题是,每次 ListActivity 或 DetailsActivity 隐藏(图片状态 2)之一,然后我在 MapActivity 上捏屏幕以缩放地图,它总是回到默认视图(图片状态 1)。关闭的活动会自动再次打开。

当我捏 MapActivity 时,有人知道如何防止隐藏的片段再次进入第一个状态吗?

这是我如何隐藏 DetailsActivity() 的函数示例:

public void hideDetailview() {
        final Animation close = AnimationUtils.loadAnimation(this, R.anim.close);
        close.setFillEnabled(true);
        close.setAnimationListener(closeDetailAnimationListener);
        fragment_detail.startAnimation(close);

        Toast.makeText(MainFragmentActivity.this,WWHApplication.getDrawer(), Toast.LENGTH_SHORT).show();
    }

    private AnimationListener closeDetailAnimationListener = new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {


            int newLeft = -330;
            fragment_detail.layout(newLeft, 
                    fragment_detail.getTop(), 
                                newLeft + fragment_detail.getMeasuredWidth(), 
                                fragment_detail.getTop() + fragment_detail.getMeasuredHeight());

        }
    };

这是xml布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.wwh"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <fragment
        android:id="@+id/my_map_fragment1"
        android:name="com.wwh.fragments.MyMapFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <!-- Preview: layout=@layout/my_map_fragment -->
    </fragment>

    <RelativeLayout
        android:id="@+id/fragment_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="55dp"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/detail_layout"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:orientation="horizontal" >

            <fragment
                android:id="@+id/my_detail_fragment"
                android:name="com.wwh.fragments.DetailFragment"
                android:layout_width="380dp"
                android:layout_height="fill_parent" />

            <LinearLayout
                android:id="@+id/border_detail"
                android:layout_width="1dp"
                android:layout_height="fill_parent"
                android:background="@drawable/border"
                android:orientation="vertical" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/list_layout"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_toRightOf="@+id/detail_layout"
            android:orientation="horizontal" >

            <fragment
                android:id="@+id/my_list_fragment"
                android:name="com.wwh.fragments.MyListFragment"
                android:layout_width="380dp"
                android:layout_height="fill_parent"
                android:background="@drawable/border"
                android:shadowColor="#000000"
                android:shadowDx="1.2"
                android:shadowDy="12"
                android:shadowRadius="12" />

            <LinearLayout
                android:id="@+id/border_list"
                android:layout_width="1dp"
                android:layout_height="fill_parent"
                android:background="@drawable/border"
                android:orientation="vertical" />

            <ImageView
                android:id="@+id/shadow_vertical"
                android:layout_width="2dp"
                android:layout_height="fill_parent"
                android:layout_marginTop="53dp"
                android:background="@drawable/shadow_vertical" />
        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

正常默认状态,所有fragment都打开

第二种状态,片段关闭

4

1 回答 1

1

您可能忘记更新其他片段的布局?或者您对新布局的计算有误?

我这么说是因为旧 android 版本上的动画很棘手,因为它们并没有真正改变视图的布局。所以也许当动画结束时,你实际上触摸了一些你认为你没有触摸到的东西。

请提供更多代码。也许它可以帮助我们理解它为什么会发生。

顺便说一句,请重命名片段类。它们不是活动,那么为什么在它们的名称中包含“活动”?

于 2012-07-07T09:12:36.007 回答