/* * Copyright (C) 2014 Balys Valentukevicius * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.balysv.materialmenu; import android.view.animation.Interpolator; import com.nineoldandroids.animation.Animator; import static com.balysv.materialmenu.MaterialMenuDrawable.IconState; /** * API for interaction with {@link MaterialMenuDrawable} */ public interface MaterialMenu { /** * Change icon without animation * * @param state new icon state */ public void setState(IconState state); /** * Return current icon state * * @return icon state */ public IconState getState(); /** * Animate icon to given state. * * @param state new icon state */ public void animateState(IconState state); /** * Animate icon to given state and draw touch circle * * @param state new icon state */ public void animatePressedState(IconState state); /** * Set color of icon * * @param color new icon color */ public void setColor(int color); /** * Set duration of transformation animations * * @param duration new animation duration */ public void setTransformationDuration(int duration); /** * Set duration of pressed state circle animation * * @param duration new animation duration */ public void setPressedDuration(int duration); /** * Set interpolator for transformation animations * * @param interpolator new interpolator */ public void setInterpolator(Interpolator interpolator); /** * Set listener for {@code MaterialMenuDrawable} animation events * * @param listener new listener or null to remove any listener */ public void setAnimationListener(Animator.AnimatorListener listener); /** * Enable RTL layout. Flips all icons horizontally * * @param rtlEnabled true to enable RTL layout */ public void setRTLEnabled(boolean rtlEnabled); /** * Manually set a transformation value for an {@link com.balysv.materialmenu.MaterialMenuDrawable.AnimationState} * * @param animationState state to set value in * @param value between {@link com.balysv.materialmenu.MaterialMenuDrawable#TRANSFORMATION_START} and * {@link com.balysv.materialmenu.MaterialMenuDrawable#TRANSFORMATION_END}. */ public void setTransformationOffset(MaterialMenuDrawable.AnimationState animationState, float value); /** * @return {@link MaterialMenuDrawable} to be used for the menu */ public MaterialMenuDrawable getDrawable(); }