1

カスタムビューグループを構築し、ビューグループにアニメーションを実装し始めました。私が抱えている問題は、ビューグループが同じアニメーションで子供をアニメーション化せずにアニメーション化できるようにする必要があることです。

ビューグループを2倍のサイズにスケーリングしているとしましょうが、それでも子を同じサイズに保ちたいとします(したがって、より多くの子をビューグループに合わせます)。

現在、次のようにアニメーションを呼び出しています。

    ScaleAnimation expandAnimation =  new ScaleAnimation(1,2,1,2);
    this.startAnimation(expandAnimation);

前もって感謝します!:)

4

1 に答える 1

3

古い Android アニメーション API では、やりたいことを直接行うことはできません。グループのスケーリングには子も含まれるという制限が 1 つあります。

2 つ目の制限は、古い Android アニメーション API は、アニメーション化する項目のビジュアル レンダリングにのみ影響し、アニメーションがアクティブな間のみ影響することです。つまり、ビューのレイアウトに関して、問題のアイテムのサイズや位置が実際に変更されることはありません。一時的に別の方法でレンダリングするだけです。たとえば、画面上で x から y に移動するボタンをアニメーション化するには、アニメーションを実行する必要があります。アニメーションが完了したら、レイアウト API を使用してボタンを実際に再配置します。

おそらく、あなたが探していることを行う方法は次のとおりです。

  1. レイアウトに追加の ViewGroup ウィジェットを組み込み、「実際の」アイテムを含むウィジェットの上に配置およびサイズ設定します。もともと非表示です。
  2. 可視化して、アニメーションを再生します。
  3. アニメーションが完了したら、追加のウィジェットを非表示にしてから、LayoutParams を介して実際の ViewGroup ウィジェットのサイズを変更し、追加のアイテムを追加します。
  4. 効果が滑らかに見えるようにするには、この一般的なアウトラインを微調整する必要があるでしょう。(たとえば、偽のビューグループを画面から削除する前に、バックグラウンドで実際のビューグループのサイズを変更します)。

Android は 3.0 Honeycomb でより新しく、より柔軟なアニメーション API を導入しましたが、残念ながら 2.x デバイス (つまり、電話) をターゲットにしている場合は利用できません。新しい API が主流になると、これがより簡単になることを願っています。

于 2011-06-29T17:31:10.947 に答える