リスト要素削除時のアニメーション


Pocket

ListViewから要素を削除する時にアニメーションさせてみました。
※RecyclerViewじゃないです。すません。

こんなやつ。
ListView Remove Animation

 

やり方

AdapterのgetViewでアニメーションさせたいViewにAnimationをセットしてあげる。

public class SampleListAdapter extends ArrayAdapter<String> {
  ...省略

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ...省略

        /* ボタンが押されたらアニメーションをスタート。アニメーション終了時に要素を削除する。 */
        holder.mBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Animation anime = AnimationUtils.loadAnimation(getContext(), R.anim.list_item_drop);
                anime.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        remove(getItem(position));
                        notifyDataSetChanged();
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });
                view.startAnimation(anime);
            }
        });

        return view;
    }
}

34行目から56行目がアニメーション追加の部分です。

サンプルコードはこちら
https://github.com/workpiles/ListViewAnimationSample

 

あとがき

ListViewの見た目をもうちょっといい感じにしたいと思って、アニメーションの追加をいろいろと試しています。

アニメーションさせるコードの追加は簡単なのですが、『いい感じ』のアニメーションにするのはやっぱり難しいですね。

RecyclerView使うと簡単に追加/削除のアニメーションできそうですが、まだ試してないので・・・そのうちやってみます。

 
 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>