Вид еще там, но не виден после перемещения анимацией - PullRequest
0 голосов
/ 21 декабря 2010

У меня небольшая, но раздражающая проблема с анимацией при просмотре в Android.

Что участвует: У меня есть FrameLayout в другой FrameLayout, содержащийся в XML.

<?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 Ответ

1 голос
/ 21 декабря 2010

EDIT: С появлением 3.0 Honeycomb все изменилось. Существует целая новая система анимации, которую можно использовать, посмотрите здесь: Блог разработчика Android

Анимации НЕ влияют на «физическое» расположение видов на экране. Если вы хотите, чтобы он действительно перемещался, вам нужно настроить свойства представления.

Более простым решением для вашей ситуации было бы использование виджета SlidingDrawer , включенного в SDK. Поскольку вы пытаетесь создать выпадающее меню, это выглядит как идеальная подгонка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...