previous page__: Setting Up the Application
=== Elementary Animations ===
==== Creating a Rotation Effect ====
This effect rotates the animation target button with an angle of 360°. A
pointer to this angle is stored in the application data as anim->rt_angle
.
Create the button and add it to the center column.
<code c>
The rotation button
Evas_Object *btn_rotate = elm_button_add(win);
elm_object_text_set(btn_rotate, “Rotate”);
evas_object_size_hint_weight_set(btn_rotate, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(btn_rotate);
evas_object_smart_callback_add(btn_rotate, “clicked”, _btn_rotate_cb, &anim);
elm_box_pack_end(center_vbox, btn_rotate);
</code>
In the rotate button callback, call the effect function with the target button
as first parameter and the rotation angle as the second one.
<code c>
static void
_btn_rotate_cb(void *data, Evas_Object *btn, void *ev)
{
Animations *anim = (Animations *)data;
Setting the button text
elm_object_text_set(anim->button, “Rotate”);
_rotation_effect(anim->button, *(anim->rt_angle));
}
</code>
The animation function rotates the animation target by adding a rotation
effect with
elm_transit_effect_rotation_add
. This function takes three
parameters:
* Elm_Transit
* the rotation position at which the effect begins
* the rotation position at which the effect ends
Rotation starts at 0° to finish at 360°. The animation lasts two seconds.
<code c>
static void
_rotation_effect(Evas_Object *obj, float angle)
{
Elm_Transit *trans = elm_transit_add();
elm_transit_object_add(trans, obj);
rotates the object from its original angle to given degrees to the right
elm_transit_effect_rotation_add(trans, 0.0, angle);
elm_transit_duration_set(trans, 2.0);
elm_transit_go(trans);
}
</code>
next page__: **Creating a Zoom Effect