Androidで拡張可能なリストを開くときにアニメーションを追加する方法はありますか?ユーザーが展開可能なリストをクリックしたときに、スライド式の引き出しを開いているようなアニメーション/効果が得られるようにしたいと思います。
完全に開くまでゆっくりと動きます。
Androidで拡張可能なリストを開くときにアニメーションを追加する方法はありますか?ユーザーが展開可能なリストをクリックしたときに、スライド式の引き出しを開いているようなアニメーション/効果が得られるようにしたいと思います。
完全に開くまでゆっくりと動きます。
運がないので、検索に多くの時間を費やしました。既存のソリューションは十分にスムーズではありません。レイアウトが 2 つのボタンよりも複雑な場合、遅延が発生します。
ListAdapter
そのため、ビュー全体をにキャッシュしBitmap
、ビュー自体ではなく、キャッシュされたビューでアニメーションを実行する独自のものを作成しました。それははるかに速く動作します。
ここにあります:https://github.com/dmitry-zaitsev/ExpandableAdapter
良いニュースは、大量のコードを書き直す必要がないことです。my をExpandableAdapter
アダプターに巻き付けて、トグル ボタンのように機能するビューの ID と、2 番目のコンテンツを保持するビューの ID を指定するだけです。レベル:
new ExpandableAdapter(context, yourAdapter, R.id.switch, R.id.holder);
それだけです。
私はこれとまったく同じ問題を抱えていました。そして、私はそれを完全に修正しました。github にオープンソース化しました。 https://github.com/tjerkw/Android-SlideExpandableListView
基本的に、このプロジェクトの依存関係を Android プロジェクトに含めます。そして、あなたListAdapter
をにラップしますSlideExpandableListAdapter
。ラッパーは、アニメーション付きのスライド機能を .xml ファイルに追加しますListView
。
お役に立てば幸いです。私はすでに 2 つのプロジェクトで使用しています。
だから私がやったことは、通常のものを使用してListView
から onListItemClick でアニメーションを実行することです。アニメーションは、私がこのリンクで行っていることと似ています: Android animate drop down/up view right
ただし、行ビューの一部のみです。行ビューは、xml で次のように実装されます。
<somelayout>
<normal>
</normal>
<expanded>
</expanded>
</somelayout>
通常は展開せずに使用されます。展開がアクティブになると、展開されたものがなくなるのではなく、表示されるように設定されます。閉じるときに再び消えるように設定することを制御し続ける必要があります(これは、リサイクルされる変換ビューに設定されていることに注意してください)。
必要に応じてさらに明確にすることができます。これは、非常に多くのコードを入れるだけです。
それが私がこの状況でしたことです。
ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(list1, PropertyValuesHolder.ofInt("bottom", currentlistHeight,currentlistHeight*2 ));
これにより、listView の高さが 2 倍になり、アニメーション化されます。現在のリストの高さをZEROに設定した場合。これは引き出しのように機能します。