仍然在那里查看但在被动画移出后不可见

时间:2010-12-21 18:23:30

标签: android animation

我对Android中的观看动画有一个小而烦人的问题。

涉及的内容: 我在另一个包含在xml中的FrameLayout中有一个FrameLayout。

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

        <ListView
                android:id="@android:id/list"
                android:layout_height="fill_parent"
                android:layout_width="fill_parent"></ListView>
        <FrameLayout
                android:id="@+id/TopBanner"
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
                <ImageView
                        android:id="@+id/ImageView01"
                        android:layout_width="fill_parent"
                        android:background="@drawable/topmenu"
                        android:layout_height="150dip"></ImageView>

                <Gallery
                        android:id="@+id/Gallery01"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"></Gallery>
        </FrameLayout>
</FrameLayout>

我还写了一个动画XML:

 <?xml version="1.0" encoding="utf-8"?>
<set
        android:interpolator="@android:anim/bounce_interpolator"
        xmlns:android="http://schemas.android.com/apk/res/android"
        fillEnabled="true"
        android:fillBefore="true"
        android:fillAfter="true">
        <translate
                android:duration="500"
                android:fromYDelta="0"
                android:toYDelta="-80%" />
</set>

我想要的是在活动视图中点击我的内部frameLayout(topbanner),除了20%之外,以便在我点击它时重新显示。一种顶级菜单。

我设法应用了我的动画,但即使我的布局已翻译我也可以触摸它,好像它还在那里。有什么建议吗?这是我的java代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        UserSettings = getSharedPreferences("net.blabla_preferences", MODE_WORLD_WRITEABLE);

        tab = getIntent().getExtras().getInt("net.blabla.FigureTab");

        setContentView(R.layout.layout_figure_list);

        final Animation animation = AnimationUtils.loadAnimation(this, R.anim.animation_topbanner);
        topbanner = (FrameLayout) findViewById(R.id.TopBanner);


        topbanner.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                v.startAnimation(animation);
            }
        });

        load();

    }

1 个答案:

答案 0 :(得分:1)

编辑: 自从3.0 Honeycomb问世以来,情况发生了变化。有一个全新的动画系统可以利用,看看这里:Android Developer's Blog

动画不会影响屏幕上视图的“物理”位置。如果您希望它实际移动,那么您需要调整视图的属性。

更简单的解决方案是使用SDK中包含的SlidingDrawer小部件。因为你试图获得一个拉出菜单,这似乎是一个完美的契合。