Creazione di icone per Android

Il vostro grafico di fiducia vi ha preparato delle bellissime immagini per la vostra applicazione Android ? Avete creato voi delle immagini che volete trasformare in icone da integrare nella vostra applicazione ? Non volete convertire a mano l'immagine in tutti i formati possibili ?

Eccovi un semplice tool per la creazione di icone per Android, che farà il lavoro al posto vostro!

Prima di tutto una veloce premessa, espressa in termini di prerequisiti:

  • dotatevi di un sistema Linux funzionante (o almeno Unix-like)
  • installate i tool ImageMagick

Una volta che avete preparato il sistema create in /usr/local/bin (o altro percorso nel quale inserire i vostri script/programmi) il file android_icon.sh e al suo interno incollate il seguente codice:

#!/bin/sh## Davide Airaghi# Simple "icon creator" for Android development# Image sizes taken from http://iconhandbook.co.uk/reference/chart/android/#echo ""TYPE="$1"IMAGE="$2"RESNAME="$3"OUTDIR="$4"SIZES=""if [ "$RESNAME" != "" ]; then	RESNAME=$( echo $RESNAME | sed -es/\[^a-zA-Z0-9\\_\]/_/g )fifunction usage() {	echo ""	echo "Usage:"	echo "android_icon.sh TYPE ORIGINAL_IMAGE RESOURCE_NAME OUTPUT_DIR"	echo ""	echo "TYPE can be one of: launcher, actionbar, dialog, tab, contextual, notification"	echo "" 	echo "Example"	echo ""	echo "android_launger_icon.sh launcher ~/images/my-icon.png my_icon ~/progs/my-app/app/src/main/res"	echo ""	echo ""}if [ "$TYPE" = "" ]; then	echo "Type not given"	usage	exit 1ficase $TYPE in	launcher)		SIZES="mdpi-48 hdpi-72 xhdpi-96 xxhdpi-144 xxxhdpi-192"		;;	actionbar)		SIZES="mdpi-32 hdpi-48 xhdpi-64 xxhdpi-96 xxxhdpi-128"		;;	dialog)		SIZES="mdpi-32 hdpi-48 xhdpi-64 xxhdpi-96 xxxhdpi-128"		;;	tab)		SIZES="mdpi-32 hdpi-48 xhdpi-64 xxhdpi-96 xxxhdpi-128"		;;	contextual)		SIZES="mdpi-16 hdpi-24 xhdpi-32 xxhdpi-48 xxxhdpi-64"		;;	notification)		SIZES="mdpi-24 hdpi-36 xhdpi-48 xxhdpi-72 xxxhdpi-96"		;;	*)		echo "Type not valid"			usage		exit 2		;; esacif [ "$IMAGE" = "" ]; then	echo "Image file not given"	usage	exit 3fiif [ "$RESNAME" = "" ]; then	echo "Resource name not given"	usage	exit 4fiif [ "$OUTDIR" = "" ]; then	echo "Output dir not given"	usage	exit 5fiif [ ! -f $IMAGE ]; then	echo "Image file not found"	exit 6fiif [ ! -d $OUTDIR ]; then	echo "Output dir not found"	exit 7fiIMAGENAME=$(basename $IMAGE)IMAGENAME="${IMAGENAME%.*}"PREFIX="mipmap-"IMG_OK=""IMG_ERR=""for i in $SIZES;do	ERR=0	OUTFILE=${OUTDIR}/mipmap-$(echo $i|cut -d- -f1)	if [ ! -d ${OUTFILE} ]; then		mkdir -p ${OUTFILE}		if [ "$?" != "0" ]; then			echo "Unable to create ${OUTFILE}"			ERR=1		fi	fi	OUTFILE=${OUTFILE}/${RESNAME}.png	if [ "$ERR" = "0" ]; then		SIZE=$(echo $i|cut -d- -f2)		convert $IMAGE -resize ${SIZE}x${SIZE} -gravity center -extent ${SIZE}x${SIZE} ${OUTFILE}		if [ "$?" != "0" ]; then			ERR=1			echo "Unable to create ${OUTFILE}"		fi	else		echo "Unable to create ${OUTFILE}"	fi	if [ "$ERR" = "1" ]; then		IMG_ERR="${IMG_ERR}$OUTFILE "	else		IMG_OK="${IMG_OK}$OUTFILE "		fidoneecho ""echo "Images created: ${IMG_OK}"echo "Images not created: ${IMG_ERR}"echo ""if [ "${IMG_OK}" = "" ]; then	exit 255else	exit 0fi

Salvate il file e dategli i permessi di esecuzione ( es: chmod +x /usr/local/bin/android_icon.sh ). Una volta fatto tutto questo siete pronti per convertire immagini in icone per Android!

Il tool prevede che, quando invocato, gli vengano passati 4 parametri:

  • TYPE (primo parametro) : la tipologia di icone da generare (vedere più sotto)
  • ORIGINAL_IMAGE (secondo parametro) : il nome dell'immagine che volete usare per la generazione delle icone
  • RESOURCE_NAME (terzo parametro) : il nome da dare alla risorsa all'interno dell'ambiente di sviluppo. fate attenzione che il tool sovrascriverà automaticamente eventuali risorse già presenti con lo stesso nome!
  • OUTPUT_DIR (quarto parametro) : la directory all'interno della quale andare a salvare le icone generate. indicate la directory in cui sono presenti le la varie risorse dell'app che state sviluppando (in generale è la directory app/src/main/res all'interno del vostro progetto)

Al momento le tipologie di icone supportate sono le seguenti:

  • launcher : sono le icone che vengono usate nelle schermate con l'elenco delle applicazioni e/o sulla schermata principale.
  • actionbar: sono le icone che vengono usate nelle "barre superiori" delle applicazioni
  • dialog: sono le icone che vengono usate nei box di avviso in sovraimpressione
  • tab: sono le icone che vengono usate negli elementi delle barre di navigazione basate su schede
  • contextual: sono le generiche icone associate alle azioni dipendenti dal contesto
  • notification: sono le icone che vengono usate quando si visualizzano le notifiche