Skip to content

Migrating from AppCompat

ZieIony edited this page May 18, 2015 · 1 revision

You already have a (more or less complete) app based on the AppCompat library? Wonder how to convert it to Carbon and how much (or little) work that entails? Well, read on!

  1. Replace layouts with their Carbon counterpart. LinearLayout becomes carbon.widget.LinearLayout and so on. This enables shadows, elevation and clipping on contained views.

  2. Use Carbon views for shadows and/or ripples:

  • Replace standard views with their Carbon counterparts.
  • Let your custom views inherit from the Carbon counterparts instead of the standard views.
  • Let your custom views implement the Carbon interfaces, if there is no Carbon view you can use directly. For more information read the Advanced Usage section.
  1. Inherit your base theme from Carbon instead of AppCompat. The themes carbon_Theme.Light and carbon_Theme.Dark themselves inherit the Appcompat theme. Make sure to replace your base theme for all API versions, not just the basic version!

Hints/Reminders

  • Views that draw a shadow must have a completely opaque background. Unset backgrounds (null), backgrounds set to the color transparent as well as semitransparent backgrounds will show the blackness of the shadow inside the view. On Lollipop devices this looks like a trapezoid shadow. On pre-Lollipop devices the whole view is greyish. To achieve seemingly transparent views use the color of whatever is behind the view, e.g. ?android:attr/windowBackground
  • Views need space to have their shadow drawn. This can either be achieved by giving them a margin (but not a padding) or setting clipChildren of the surrounding ViewGroups/layouts to false. The margin required to display the shadow created by a view is equal to its Z-Value (elevation + translationZ).
Clone this wiki locally