# Propuesta definición y uso de Dimens ###### tags: `foro` ## Dimens Todas las dimensiones usadas para implementar los diseños de vista deben estar definidas en recursos de tipo `dimen` ### DPs - Las dimensiones comunes (en **KBP**, módulo `common`; en proyectos **legacy**, region `COMMON`) deberán estar especificadas como se muestra a continuación. Mediante consenso, los equipos deben valorar la inclusión de nuevas dimensiones comunes en el proyecto. - Plantilla: ```xml <dimen name="common__view_name__view_measure">48dp</dimen> ``` - Ejemplo: ```xml <dimen name="common__btn__height">48dp</dimen> ``` - Cada vista de una funcionalidad (en **KBP**, cualquier módulo de `feature`; en proyectos **legacy**, region de la `SCREEN` correspondiente) tendrá especificadas sus propias dimensiones de la siguiente manera: - Si es una dimensión común, referenciar a la dimensión del módulo `common`: ```xml <dimen name="login_fragment__btn__register__height">@dimen/common__btn__height</dimen> ``` - Si es una dimensión propia, específicarla en su archivo de dimensiones: ```xml <dimen name="login_fragment__btn__init__height">64dp</dimen> ``` - Plantilla: ```xml <dimen name="screen_context__view_type__view_name__view_measure">64dp</dimen> ``` - Ejemplo: ```xml <dimen name="login_fragment__btn__init__height">64dp</dimen> <dimen name="login_fragment__input__user__height">48dp</dimen> ``` - Además, si se identifican dimensiones comúnes propias de la funcionalidad (en **KBP**, cualquier módulo de `feature`; en proyectos **legacy**, region de la `FEATURE`), definirlas de la siguiente manera: - Plantilla: ```xml <dimen name="feature_context__view_name__view_measure">64dp</dimen> ``` - Ejemplo: ```xml <dimen name="login_feature__btn__height">64dp</dimen> ``` - Excepcionalmente, las dimensiones en selectores, drawables y similares serán definidos explícitamente salvo haber comprobado in situ el buen funcionamiento de usar referencias. ### SPs - Para las dimensiones comunes (en **KBP**, módulo `common`) se definen por tipo de texto (deberían estar espeficicadas por equipo **UX/UI** en una Guía de estilo) - No se permitirán sufijos de tipo `small`, `high`, `big`, `ultimate`, etc. Deberán de ser lo suficientemente descriptivos. ```xml <!-- Common defined by UX/UI or Google Material Design--> <dimen name="common__font__h1">96sp</dimen> <dimen name="common__font__h2">60sp</dimen> <dimen name="common__font__h3">48sp</dimen> <dimen name="common__font__h4">34sp</dimen> <dimen name="common__font__h5">24sp</dimen> <dimen name="common__font__h6">20sp</dimen> <dimen name="common__font__subtitle1">16sp</dimen> <dimen name="common__font__subtitle2">14sp</dimen> <dimen name="common__font__body1">16sp</dimen> <dimen name="common__font__body2">14sp</dimen> <dimen name="common__font__button">14sp</dimen> <dimen name="common__font__caption">12sp</dimen> <dimen name="common__font__overline">10sp</dimen> <!-- New common defined --> <dimen name="common__font__header__suffix_descriptive">40sp</dimen> <dimen name="common__font__subtitle__suffix_descriptive">20sp</dimen> <!-- Opcionalmente comentar ciertas dimensiones de fuentes para casos muy específicos--> <dimen name="common__font__header__map_toolbar">36sp</dimen> ``` - Cada vista tendrá especificadas sus propias dimensiones de la siguiente manera - Si es una dimensión común, referenciar a la dimensión del módulo `common` ```xml <dimen name="login__label__title">@dimen/common__font__h5</dimen> ``` - Si es una dimensión propia, específicarla en su archivo de dimensiones ```xml <dimen name="login__label__user_input">12sp</dimen> ``` - Si considera conveniente por parte del equipo, definir dimensiones comunes dentro de una funcionalidad - Plantilla: ```xml <dimen name="feature_context__font__view_name__view_measure">64dp</dimen> ``` - Ejemplo: ```xml <dimen name="login_feature__font__title">64dp</dimen> ```