Publicado en Android

Cómo implementar el modo oscuro en Kotlin para Android


Ahora que ya se ha hecho realidad el esperado modo oscuro en Android, gracias a la versión Android Q, en versiones anteriores de Android ya se vio un intento pero por ejemplo en Android P, solo se activaba cuando el dispositivo entraba en ahorro de batería.

Sigue leyendo “Cómo implementar el modo oscuro en Kotlin para Android”
Publicado en Android

Cómo soportar la relación de aspecto 18:9 en aplicaciones de Android


Des de el 2016 los fabricantes de Android empezaron a sacar dispositivos más alargados, dejando el 16:9 al pasado. Por eso es necesario adaptar que las apps se puedan visualizar a pantalla completa y ofrecer la máxima experiencia en diferentes ratios de pantalla.

La recomendación de Google es diseñar las aplicaciones para que admiten relación de aspecto de 2.1 o superior.

Directiva para soportar pantallas de 2.1 o superior

En el archivo AndroidManifest.xml de la app añadir dentro del bloque de application

<application>
   ...
   <meta-data android:name="android.max_aspect" android:value="2.1" />
   ...
</application>

Más información

Información extraída del Blog oficial de Google (Android Developers Blog) – Update your app to take advantage of the larger aspect ratio on new Android flagship devices

Publicado en Android, Recursos

Material Design Lista simples en Android


Según la documentación de Google sobre Material Design. Una lista consta de una sola columna continua divido por conjunto de filas iguales, que funcionan como contenedores de elementos informativos.

Las listas son adecuadas para la presentación de un tipo de datos homogéneos o conjunto de datos del mismo tipo, puede contener imágenes (iconos,avatares) y texto. Están optimizadas para la comprensión de la lectura , ofrecen diferenciar bien entre tipos de datos similares o sus cualidades dentro de un conjunto de datos.

Lista Simples

Las listas simples solo muestran la información en una sola linea:

Solo texto

alt text

draw_item_single_line_text_only.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="48dp"
 android:background="?android:attr/selectableItemBackground"
 android:paddingEnd="@dimen/list_right_padding"
 android:paddingLeft="@dimen/list_left_padding"
 android:paddingRight="@dimen/list_right_padding"
 android:paddingStart="@dimen/list_left_padding"
 tools:context="com.webserveis.app.detaile.MainActivity">

 <TextView
 android:id="@+id/text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerVertical="true"
 android:text="Single-line item"
 android:textColor="?android:textColorPrimary"
 android:textSize="16sp" />

</RelativeLayout>

Con icono y texto

alt text

draw_item_single_line_icon_with_text.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="48dp"
 android:background="?android:attr/selectableItemBackground"
 android:paddingEnd="16dp"
 android:paddingLeft="16dp"
 android:paddingRight="16dp"
 android:paddingStart="16dp"
 tools:context="com.webserveis.app.detaile.MainActivity">

 <ImageView
 android:id="@+id/image"
 android:layout_width="24dp"
 android:layout_height="24dp"
 android:layout_centerVertical="true"
 android:src="@mipmap/ic_launcher"
 android:tint="#666666" />

 <TextView
 android:id="@+id/text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:layout_alignParentStart="true"
 android:layout_centerVertical="true"
 android:layout_marginLeft="56dp"
 android:layout_marginStart="56dp"
 android:text="Single-line item"
 android:textColor="?android:textColorPrimary"
 android:textSize="16sp" />

</RelativeLayout>

Avatar con texto

alt text

draw_item_single_line_avatar_with_text.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="56dp"
 android:background="?android:attr/selectableItemBackground"
 android:paddingEnd="16dp"
 android:paddingLeft="16dp"
 android:paddingRight="16dp"
 android:paddingStart="16dp"
 tools:context="com.webserveis.app.detaile.MainActivity">

 <ImageView
 android:id="@+id/image"
 android:layout_width="48dp"
 android:layout_height="48dp"
 android:layout_centerVertical="true"
 android:src="@mipmap/ic_launcher"
 android:tint="#666666" />

 <TextView
 android:id="@+id/text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:layout_alignParentStart="true"
 android:layout_centerVertical="true"
 android:layout_marginLeft="56dp"
 android:layout_marginStart="56dp"
 android:text="Single-line item"
 android:textColor="?android:textColorPrimary"
 android:textSize="16sp" />

</RelativeLayout>

Avatar con texto y icono

alt text

draw_item_single_line_avatar_with_text_and_icon.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="56dp"
 android:background="?android:attr/selectableItemBackground"
 android:paddingEnd="16dp"
 android:paddingLeft="16dp"
 android:paddingRight="16dp"
 android:paddingStart="16dp"
 tools:context="com.webserveis.app.detaile.MainActivity">

 <ImageView
 android:id="@+id/image"
 android:layout_width="48dp"
 android:layout_height="48dp"
 android:layout_centerVertical="true"
 android:src="@mipmap/ic_launcher"
 android:tint="#666666" />

 <TextView
 android:id="@+id/text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:layout_alignParentStart="true"
 android:layout_centerVertical="true"
 android:layout_marginLeft="56dp"
 android:layout_marginStart="56dp"
 android:layout_toLeftOf="@+id/image2"
 android:layout_toStartOf="@+id/image2"
 android:text="Single-line item"
 android:textColor="?android:textColorPrimary"
 android:textSize="16sp" />

 <ImageView
 android:id="@+id/image2"
 android:layout_width="24dp"
 android:layout_height="24dp"
 android:layout_alignParentEnd="true"
 android:layout_alignParentRight="true"
 android:layout_centerVertical="true"
 android:layout_marginLeft="16dp"
 android:layout_marginStart="16dp"
 android:src="@mipmap/ic_launcher"
 android:tint="#666666" />

</RelativeLayout>