Как масштабировать View / ViewGroup - правильно анимировать макет? - PullRequest
7 голосов
/ 19 апреля 2011

Короче говоря, я хочу масштабировать представление - так же, как это делает Android Market, когда вы нажимаете кнопку «Еще» на примере «Описание».Я выяснил, что Android Market имеет макет следующей структуры:

    <FrameLayout
    android:id="@+id/artists_frame"
    android:layout_width="fill_parent"
    android:layout_height="64dip"
    android:layout_below="@id/something1"
    android:layout_above="@id/something2"

    >

<!-- Some view there, which height >> 64dip -->

    </FrameLayout>

Итак, я попробовал различные Animations / LayoutAnimations на FrameLayout (через view.setAnimation(), view.setLayoutAnimation() и ScaleAnimation), ноэффект всегда один и тот же: представление анимируется, но его реальное layout_height после масштабирования остается прежним (поэтому положение других представлений, зависящих от данного FrameLayout, остается прежним).

После этого, Я думал - я изменяю в цикле layout_height данного FrameLayout:

layoutParams = view.getLayoutParams()
layoutParams.height = scaleTo;
layout.setLayoutParams(layoutParams);

У меня есть анимированный, рыночный вид, но стоимость (производительность !!!) - это путьto high ...

Таким образом, вопрос заключается в следующем: существует ли какой-либо другой, правильный способ масштабирования (например, изменения высоты с 50dip на 200 dip) данного View / ViewGroup, чтобы положение представлений ниже анимациивид тоже меняется?

1 Ответ

1 голос
/ 03 мая 2011

Как говорит Чет Хаазе в этом сообщении в блоге: http://android -developers.blogspot.com / 2011/02 / animation-in-honeycomb.html

"... Наконец, предыдущие анимации изменили внешний вид целевых объектов ... но на самом деле они не изменили сами объекты ..."

Так как вам нужно только визуально, вместо изменения вида LayoutParameters я бы также анимировал вид внизу с переводом, используя android:fillAfter для обоих.

...