17

展開可能なリストビューで子ビューをアニメーション化しようとしています。グループを展開するときは子ビューを上から下にスライドさせ、グループを折りたたむときは下から上にスライドさせたいと思います。いくつかの方法 (viewgroup または子ビューのアニメーション化) を調べましたが、うまく機能していないように見えるか、正しく行っていません。

BaseExpandableListAdapter からクラスを拡張して、独自のカスタム アダプターを作成しました。getChildView および getGroupView メソッドで膨らませるグループ/子のカスタム (xml) ビューもあります。

現在の折りたたまれた/展開されたグループだけがその子をアニメーション化するようにしたいと思います。誰かが私を正しい方向に向けることができますか? さらに詳しい情報やコードが必要な場合は、お知らせください。

よろしく、イヴォ

4

3 に答える 3

5

だから私がやったことは、通常のリストビューを使用してから、クリックしたときに行ビューをアニメーション化することです。

私はアニメーションにこの方法を使用します: Android animate drop down/up view right

ドロップダウンするビューの高さが wrap_content の場合、少し注意が必要です。この問題のために、アニメーションを開始する前に高さを見つけて設定する必要がありました。

public static void setHeightForWrapContent(Activity activity, View view) {
    DisplayMetrics metrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

    int screenWidth = metrics.widthPixels;

    int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
    int widthMeasureSpec = MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY);

    view.measure(widthMeasureSpec, heightMeasureSpec);
    int height = view.getMeasuredHeight();
    view.getLayoutParams().height = height;
}

アニメーションの開始前にビューを削除し、アニメーションの開始時に表示する必要があります。

編集:ここで完全な例を作成しました。

于 2012-04-10T15:47:48.023 に答える
2

bindChildView メソッドで、各子ビューにアニメーションを追加できます。現在のグループの子のみをアニメーション化するには、onExpand イベントをキャッチし、その子を読み取り、ID を配列と bindChildView に保存します。その配列に保存されている子のみをアニメーション化します。

于 2011-04-07T14:42:40.653 に答える
2

別の解決策は、私が書いた Android-SlideExpandableListView ライブラリを使用することです: https://github.com/tjerkw/Android-SlideExpandableListView

これは、ウディニッチやその他のアイデアに基づいています。

詳細については、次のブログ投稿を参照してください: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/

于 2012-06-23T12:51:21.380 に答える