Blog para desarrollo de aplicaciones en Android, aprende paso a paso como crear aplicaciones.

Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación para mostrarle publicidad personalizada y realizar análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más

10 Mejores Practicas de Desarrollo en Android

Buenas Practicas de Desarrollo en Android

Curso Kotlin Español


1. Cambiar a Android Studio

En la pagina oficial de Android declara explícitamente que "Android Studio es ahora el IDE oficial para desarrollo en Android". Si todavía está en Eclipse y esa no es razón suficiente para cambiar de IDE, aquí hay algunas características exclusivas de Android Studio que te harán cambiar de opinión:
  1. Android Studio utiliza el sistema de compilación Gradle . Gradle tiene características como soporte para repositorios Maven , múltiples tipos de compilación, múltiples tipos de aplicaciones (por ejemplo, demo y pago), divisiones de apk (por densidad de pantalla o ABI) y configuraciones de firma de apk personalizadas.
  2. Contiene un creador de 9 parches incorporado.
  3. Puede ver vistas previas de dibujos, cadenas, colores y otros recursos.
  4. Un selector de color para elegir colores en diseños y dibujos.
  5. Casi todos los atajos de navegación y teclado de IntelliJ IDEA .

Además, Google ha finalizado el desarrollo del complemento ADT para Eclipse.

2. Utilizar strings.xml

Agregar texto como recursos de cadena siempre es útil a largo plazo, especialmente cuando se necesita agregar soporte para nuevos idiomas en tu aplicación Android.

Existen tres tipos de recursos String para nuestra aplicación y son los siguientes.

String

Recurso XML que ofrece una sola string.

Ejemplo:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string 
        name="string_nombre" >text_string</string> 
</resources> 

Matriz de strings

Recurso XML que ofrece una matriz de strings.

Ejemplo:

 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="string_anime">
        <item>Dragon Ball</item>
        <item>Naruto</item>
        <item>Bleach</item>
    </string-array>
</resources>
Para utilizarlo en Java.
Resources res = getResources();
String[] planets = res.getStringArray(R.array.string_anime);

Strings de cantidad (plurales)

Recurso XML que conlleva diferentes strings para brindar pluralización.

Ejemplo:

 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals name="numberOfSongsAvailable">
        <!-
             As a developer, you should always supply "one" and "other"
             strings. Your translators will know which strings are actually
             needed for their language. Always include %d in "one" because
             translators will need to use %d for languages where "one"
             doesn't mean 1 (as explained above).
          -->
        <item quantity="one">%d song found.</item>
        <item quantity="other">%d songs found.</item>
    </plurals>
</resources>

Para utilizarlo en Java.
int count = getNumberOfSongsAvailable(); 
Resources res = getResources(); 
String songsFound = res.getQuantityString(R.plurals.numberOfSongsAvailable, count, count); 

3. Puedes crear diseños separados para los elementos de la IU que se reutilizarán en otros Activity.

La etiqueta <include /> hace posible tener un diseño único, lo puedes reutilizar en múltiples actividades y fragmentos de toda la aplicación.
Por ejemplo, para un botón de estilo único que debe mostrarse en muchas actividades de su aplicación, se puede crear un diseño separado. Ese diseño se puede incluir en el diseño de cada actividad.

Button

<Button
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/unique_button"
    android:textStyle="bold"
    android:text="Boton Unico" />

Include

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="See button below" />

    <include layout="@layout/boton_unico.xml" />
</LinearLayout>

Otra etiqueta útil es la etiqueta <merge />. Actúa como un pseudo-padre y ayuda a eliminar un ViewGroup raíz innecesario.
Por ejemplo, si su diseño re-utilizable contiene dos botones colocados verticalmente, puede colocarlos dentro de un diseño lineal con una orientación vertical. Pero este LinearLayout se vuelve redundante si el diseño se incluye (usando <include />) en otro LinearLayout. En este caso, nuestro diseño re-utilizable puede tener <merge /> como el ViewGroup raíz en lugar de LinearLayout.

Merge 

<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Submit" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Reset" />
</merge>
Include
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter text" />

    <include layout="@layout/buttons.xml" />
</LinearLayout>

4. Incluye recursos para pantallas XXHDPI

Muchos dispositivos (y aplicaciones de iniciador) usan iconos de iniciador de la carpeta dibujable xxxhdpi. Además, el LG G3 y Nexus 6 utilizan todos los recursos de las carpetas xxxhdpi. Definitivamente habrá muchos dispositivos xxxhdpi en el futuro. Por lo tanto, debe comenzar a desarrollar el hábito de incluirlos.

5. Coloque los iconos del iniciador en carpetas mipmap

Al construir aplicaciones separadas para diferentes densidades, se eliminan las carpetas dibujables para otras densidades. Esto hará que los iconos aparezcan borrosos en los dispositivos que usan iconos de inicio de mayor densidad.
Dado que las carpetas mipmap no se eliminan, siempre es mejor usarlas para incluir los iconos del iniciador.

6. Use recursos separados para depurar y liberar

Gradle permite configurar tipos de compilación personalizados. Por defecto, se proporcionan dos tipos de compilación, depuración y lanzamiento.
Podemos proporcionar archivos separados (fuente, recursos y activos) para cada tipo de compilación creando sus carpetas correspondientes, adyacentes a la carpeta principal, en la estructura del proyecto. Estas carpetas siguen la misma estructura que main y deben contener solo los archivos primarios.

Un ejemplo de su utilidad es cuando necesita tener un archivo de configuración para Google Analytics. Se pueden crear archivos XML separados que contienen la ID de seguimiento para ambos tipos de compilación. Durante la compilación, el archivo correspondiente a la compilación se extraerá automáticamente.

Algo a tener en cuenta aquí es que siempre se usan archivos / valores de recursos de la carpeta principal. Pero un archivo / valor de recurso en main se anulará si también existe en la carpeta de compilación.

La imagen muestra cómo colocar el archivo de configuración, ga_tracker.xml, para Google Analytics para depurar y liberar tipos de compilación.

ga_tracker.xml en depuración contiene un ID de seguimiento para fines de depuración
ga_tracker.xml en la versión contiene el ID de seguimiento real
ga_tracker.xml contiene el resto de la configuración

7. Use formas y selectores en lugar de imágenes tanto como sea posible

Las formas básicas y los degradados se pueden dibujar fácilmente con la etiqueta <forma /> sin el uso de imágenes. Las formas resultantes que se dibujan siempre son nítidas y no necesitan crearse para múltiples densidades.

Se puede crear un círculo básico de la siguiente manera y guardarlo como circle.xml en la carpeta dibujable

<shape android: shape = "oval">  
     <solido android: color = "# ff01aef0" />  
 </shape> 

La etiqueta <selector /> se puede usar para agregar diferentes estados visuales (como presionado, deshabilitado, marcado) a las Vistas.

Un selector simple, para agregar un fondo de estado presionado a un botón, puede crearse de la siguiente manera y guardarse en la carpeta de elementos extraíbles

<selector xmlns: android = "http://schemas.android.com/apk/res/android">  
     <item android: drawable = "@ drawable / button_pressed" android: state_pressed = "true" />  
     <item android: drawable = "@ drawable / button_normal" />  
</selector> 

8. No agregue el paquete completo de la biblioteca de servicios de Google Play

La biblioteca de Google Play Services es un paquete que contiene todas las bibliotecas nativas de Google para Android. Google también proporciona estas bibliotecas individualmente para que podamos evitar agregar todo el paquete de servicios de Google Play. Se pueden agregar en build.gradle.

Puede encontrar una lista de las bibliotecas disponibles aquí.

9. Use una biblioteca HTTP como Volley, Retrofit

Al crear una aplicación grande, nuestro código de red puede ser enorme debido al código repetitivo. Esto no solo dificulta el mantenimiento, sino que también dificulta la depuración. Las bibliotecas como Volley y Retrofit reducen una gran cantidad de código repetitivo y tenemos menos cosas de las que preocuparnos.

10. Use la clase Parcelable en lugar de Serializable al pasar datos en Intents / Bundles

La serialización de un objeto que implementa la interfaz Parcelable es mucho más rápida que el uso de la serialización predeterminada de Java.

Una clase que implementa la interfaz serializable se marca como serializable y Java la serializa utilizando la reflexión (lo que la hace lenta).

Cuando se usa la interfaz Parcelable, todo el objeto no se serializa automáticamente. Más bien, podemos agregar selectivamente datos del objeto a una Parcela usando la cual el objeto se deserializa más tarde.

Curso Kotlin Español

No hay comentarios:

Publicar un comentario

x

Registrate!

Curso Android Español

Curso Kotlin Español

eBook Free Android Studio

Noticias y Eventos

¡Directamente a tu INBOX!

Le enviaremos nuestros recursos gratis. Para obtener nuestro contenido nuevo, únase a nuestra comunidad. No te molestaremos enviando información inútil. ¡No te pierdas ninguna actualización, mantente conectado! Recuerda verificar tu correo electronico.

Ingrese su dirección de correo electrónico:

Entregado por FeedBurner