Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: how to make transition animations on toolbar's menu icons?

If you use the last version of WhatsApp you will notice that if you long click a textbox in a chat, then the menu icons on the toolbar will change with a nice rotating animation.

How could I reproduce that effect? I know I should invalidate the menu but not how to make the animation.

like image 212
user3290180 Avatar asked Jun 11 '15 17:06

user3290180


1 Answers

  1. Use a Toolbar.
  2. Wait for the Toolbar to have its items inflated.
  3. Find the item in question
  4. Animate the item

Example:

mToolbar = (Toolbar) findViewById(R.id.toolbar);
mToolbar.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom,
                               int oldLeft, int oldTop, int oldRight, int oldBottom) {
        View item = mToolbar.findViewById(R.id.action_add_item);
        if (item != null) {
            mToolbar.removeOnLayoutChangeListener(this);
            item.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ObjectAnimator animator = ObjectAnimator
                            .ofFloat(v, "rotation", v.getRotation() + 180);
                    animator.start();
                }
            });
        }
    }
});

Note R.id.action_add_item is the id attribute of the MenuItem.

like image 195
Simas Avatar answered Oct 04 '22 20:10

Simas