7

簡単に言うと、ビューをスケーリングしたいと思います。たとえば、「説明」の「詳細」ボタンをクリックすると、Android マーケットと同じように表示されます。
Androidマーケットには次の構造のレイアウトがあることがわかりました:

    <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>

したがって、FrameLayout でさまざまな Animations / LayoutAnimations を ( および を介しview.setAnimation(), view.setLayoutAnimation()ScaleAnimation) 試しましたが、効果は常に同じです。ビューはアニメーション化されますが、スケーリング後の実際の layout_height は同じです (したがって、他のビューの位置は、指定された FrameLayout に依存しますが、同じままです)。

その後、私は考えました-ループで、指定されたFrameLayoutのlayout_heightを変更します。

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

活気に満ちた市場のようなビューを持っていますが、コスト (パフォーマンス!!!) が高すぎます...

したがって、質問は次のとおりです。アニメーションビューの下のビューの位置も変更されるように、指定された View / ViewGroup をスケーリングする (たとえば、高さを 50dip から 200dip に変更する) 他の適切な方法はありますか?

4

1 に答える 1

1

Chet Haase がこのブログ投稿で述べているように: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

「...最後に、以前のアニメーションはターゲット オブジェクトの視覚的な外観を変更しました...しかし、実際にはオブジェクト自体を変更しませんでした...」

あなたのニーズは視覚的なものだけなので、ビューを変更する代わりにLayoutParameters、下部のビューをアニメーション化し、android:fillAfter両方を使用して翻訳します。

于 2011-05-03T11:48:14.533 に答える