code: private void initActionButtonAttrs(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  		TypedArray attributes = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ActionButton,
  				defStyleAttr, defStyleRes);
  		try {
  			initType(attributes);
  			initSize(attributes);
  			initButtonColor(attributes);
  			initButtonColorPressed(attributes);
  			initRippleEffectEnabled(attributes);
  			initButtonColorRipple(attributes);
  			initShadowRadius(attributes);
  			initShadowXOffset(attributes);
  			initShadowYOffset(attributes);
  			initShadowColor(attributes);
  			initShadowResponsiveEffectEnabled(attributes);
  			initStrokeWidth(attributes);
  			initStrokeColor(attributes);
  			initImage(attributes);
  			initImageSize(attributes);
  			initShowAnimation(attributes);
  			initHideAnimation(attributes);
  		} catch (Exception e) {
  			LOGGER.trace("Failed to read attribute", e);
  		} finally {
  			attributes.recycle();
  		}
  		LOGGER.trace("Successfully initialized the Action Button attributes");
  	}
docs: Initializes the <b>Action Button</b> attributes, declared within XML resource
  <p>
  Makes calls to different initialization methods for parameters initialization.
  For those parameters, which are not declared in the XML resource,
  the default value will be used
  
  @param context context the view is running in
  @param attrs attributes of the XML tag that is inflating the view
  @param defStyleAttr attribute in the current theme that contains a
  reference to a style resource that supplies default values for
  the view. Can be 0 to not look for defaults
  @param defStyleRes resource identifier of a style resource that
  supplies default values for the view, used only if
  defStyleAttr is 0 or can not be found in the theme. Can be 0
  to not look for defaults