Construye un lanzador personalizado en Android

Lo que vas a crear

Introducción

En su forma más básica, un iniciador es una aplicación que hace lo siguiente:

  • Representa la pantalla de inicio de un dispositivo.
  • Enumera e inicia las aplicaciones que están instaladas en el dispositivo.

En otras palabras, es la aplicación que aparece cuando presionas el botón de inicio. A menos que ya haya instalado un iniciador personalizado, actualmente está usando el iniciador predeterminado que viene con su instalación de Android. Muchos fabricantes de dispositivos tienen sus propios lanzadores personalizados predeterminados que se ajustan a su aspecto y estilo propios, por ejemplo, Samsung TouchWiz y HTC Sense.

En este tutorial, vamos a crear un lanzador simple con una interfaz de usuario básica. Tendrá dos pantallas:

  • una pantalla de inicio que muestra el fondo de pantalla del dispositivo
  • una pantalla que muestra los iconos y los detalles de las aplicaciones instaladas en el dispositivo

Por cierto, si trabajas mucho con Android, es posible que desees revisar una de las más de 1,000 plantillas de aplicaciones de Android en Envato Market. Hay una gran variedad, así que seguramente encontrarás algo que te ayude con tu trabajo. O puede subcontratar áreas que no son su especialidad contratando a un desarrollador o diseñador de aplicaciones en Envato Studio.

Plantillas de aplicaciones de Android en Envato Market

1. Requisitos

Debe tener lo siguiente instalado y configurado en su máquina de desarrollo:

  • Android SDK y herramientas de plataforma
  • Eclipse IDE 3.7.2 o superior con el complemento ADT
  • un emulador o dispositivo Android con Android 2.2 o superior

Puede descargar el SDK y las herramientas de plataforma del portal de desarrolladores de Android..

2. Configuración del proyecto

Ejecute Eclipse y cree un nuevo proyecto de aplicación para Android. Estoy nombrando la aplicación SimpleLauncher, Pero puedes nombrarlo como quieras. Asegúrese de utilizar un paquete único. La versión más baja de SDK que nuestro lanzador soporta es Froyo y el SDK de destino es Frijol de jalea.

Ya que no queremos crear un Actividad, deseleccionar Crear actividad. Hacer clic Terminar continuar.

3. Proyecto Manifiesto

El siguiente paso es modificar el AndroidManifest.xml archivo añadiendo dos actividades. El primero Actividad muestra la pantalla de inicio. Llamémoslo InicioActividad Como se muestra abajo.

      

Añadiendo las categorías. android.intent.category.HOME y android.intent.category.DEFAULT al filtro de intención grupo, el asociado Actividad se comporta como un lanzador y aparece como una opción cuando presionas el botón de inicio del dispositivo.

También necesitamos establecer la launchMode a sola tarea para asegurarse de que sólo una instancia de este Actividad Se lleva a cabo por el sistema en cualquier momento. Para mostrar el fondo de pantalla del usuario, establezca el tema en Theme.Wallpaper.NoTitleBar.FullScreen.

El segundo Actividad Necesitamos agregar muestra las aplicaciones que están instaladas en el dispositivo del usuario. También es responsable de lanzar aplicaciones. No necesitamos ninguna configuración especial para esto. Actividad. Nombralo AppsListActivity.

 

4. Diseños de actividad

Crea un archivo XML para la InicioActividad clase en el proyecto res / diseño carpeta y nombre actividad_home.xml. El diseño tiene una sola Botón Eso responde a los eventos de clic. Al hacer clic en el botón, el usuario pasa de la pantalla de inicio a la lista de aplicaciones.

 

A continuación, crea un archivo XML para la AppsListActivity clase en el proyecto res / diseño carpeta y nombre activity_apps_list.xml. El diseño contiene una Vista de la lista que ocupa toda la pantalla.

    

Finalmente, cree un tercer archivo XML en la misma ubicación y asígnele el nombre list_item.xml. Este archivo define el diseño de un elemento en el Vista de la lista. Cada elemento de vista de lista representa una aplicación instalada en el dispositivo del usuario. Muestra el icono de la aplicación, la etiqueta y el nombre del paquete. Mostramos el icono de la aplicación usando una ImageView instancia y Vista de texto instancias para la etiqueta y el nombre del paquete.

     

5. Implementando las clases de actividad.

InicioActividad

Con los diseños de la aplicación creados, es hora de crear los dos Actividad clases Al crear las dos clases, asegúrese de que el nombre de cada clase coincida con el que especificó anteriormente en el archivo de manifiesto del proyecto.

Crear una nueva clase llamadaInicioActividad y establecer android.app.Actividad como su superclase.

paquete ah.hathi.simplelauncher; importar android.app.Activity; import android.content.Intent; importar android.os.Bundle; importar android.view.View; la clase pública HomeActivity extiende la actividad @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_home);  public void showApps (View v) Intent i = new Intent (this, AppsListActivity.class); startActivity (i); 

En la clase onCreate método, invocamos setContentView, Pasando en el diseño que creamos anteriormente. Tal vez recuerdes que agregamos un botón a la actividad_home diseño que activa un método llamado showApps. Ahora necesitamos implementar ese método en el InicioActividad clase. La implementación es bastante simple, creamos un Intención Para el AppsListActivity clase y empezar.

AppsListActivity

Crea otro Actividad clase nombrada AppsListActivity y establecer android.app.Actividad como su superclase. En la clase onCreate método, invocamos setContentView, pasando en el activity_apps_list diseño que creamos anteriormente.

paquete ah.hathi.simplelauncher; importar android.app.Activity; import android.content.Intent; importar android.os.Bundle; importar android.view.View; la clase pública AppsListActivity extiende la actividad @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); 

A pesar de que nuestro lanzador aún no está terminado, puede guardar y ejecutar su aplicación en este momento. Cuando presiona el botón de inicio del dispositivo, debería ver una ventana emergente que le pregunta qué lanzador le gustaría usar.

Si tu eliges Inicio de inicio simple, Debería ver su nueva pantalla de inicio con un solo botón en la esquina superior derecha de la pantalla. También deberías ver el fondo de pantalla actual de tu dispositivo..

Vuelve a Eclipse y crea una clase llamada AppDetail que contendrá los detalles de una aplicación, el nombre de su paquete, la etiqueta y el icono de la aplicación. La interfaz es bastante básica como se puede ver a continuación..

paquete ah.hathi.simplelauncher; importar android.graphics.drawable.Drawable; public class AppDetail CharSequence label; Nombre de CharSequence; Icono dibujable; 

6. Obteniendo aplicaciones

En el loadApps método de la AppsListActivity clase, usamos el queryIntentActivities método de la Gerente de empaquetación clase para buscar todos los Intenciones que tienen una categoría de Intent.CATEGORY_LAUNCHER. La consulta devuelve una lista de las aplicaciones que puede iniciar un lanzador. Recorremos los resultados de la consulta y agregamos cada elemento a una lista llamada aplicaciones. Eche un vistazo al siguiente fragmento de código para aclararlo..

gestor de paquetes privado; Lista privada aplicaciones; private void loadApps () manager = getPackageManager (); apps = nueva ArrayList(); Intent i = new Intent (Intent.ACTION_MAIN, null); i.addCategory (Intent.CATEGORY_LAUNCHER); Lista availableActivities = manager.queryIntentActivities (i, 0); para (ResolveInfo ri: availableActivities) AppDetail app = new AppDetail (); app.label = ri.loadLabel (administrador); app.name = ri.activityInfo.packageName; app.icon = ri.activityInfo.loadIcon (administrador); apps.add (aplicación); 

7. Viendo la lista de aplicaciones

Con el aplicaciones variable que contiene todos los detalles que necesitamos, podemos mostrar la lista de aplicaciones usando el Vista de la lista clase. Creamos un simple ArrayAdapter y anular su getView Método para hacer los elementos de la lista. Entonces asociamos Vista de la lista con el adaptador.

Lista privada de ListView; private void loadListView () list = (ListView) findViewById (R.id.apps_list); ArrayAdapter adaptador = nuevo ArrayAdapter(esto, R.layout.list_item, apps) @Override public View getView (int position, View convertView, ViewGroup parent) if (convertView == null) convertView = getLayoutInflater (). inflate (R.layout.list_item, nulo);  ImageView appIcon = (ImageView) convertView.findViewById (R.id.item_app_icon); appIcon.setImageDrawable (apps.get (posición) .icon); TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label); appLabel.setText (apps.get (posición) .label); TextView appName = (TextView) convertView.findViewById (R.id.item_app_name); appName.setText (apps.get (posición) .name); volver convertView; ; list.setAdapter (adaptador); 

8. Escuchar para clics

Cuando el usuario hace clic en un elemento en el Vista de la lista, La aplicación correspondiente debe ser lanzada por nuestro lanzador. Usamos el getLaunchIntentForPackage método de la Gerente de empaquetación clase para crear un Intención Con la que iniciamos la aplicación. Echa un vistazo al siguiente fragmento de código.

void privado addClickListener () list.setOnItemClickListener (nuevo AdapterView.OnItemClickListener () @Override public void onItemClick (AdapterView av, View v, int pos, id largo) Intent i = manager.getLaunchIntentForPackage (apps.get (pos) .name.toString ()); AppsListActivity.this.startActivity (i); ); 

9. Poniendo todo junto

Para hacer que todo funcione en conjunto, necesitamos invocar. loadApps, loadListView, y addClickListener en el onCreate método de la AppsListActivity clase como se muestra a continuación.

void protegido onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_apps_list); loadApps (); loadListView (); addClickListener (); 

Crea y ejecuta tu aplicación una vez más para ver el resultado. Ahora debería poder ver las aplicaciones que pueden iniciarse al hacer clic en el botón en la pantalla de inicio de nuestro lanzador. Haga clic en un elemento para iniciar la aplicación correspondiente..

Conclusión

Ahora tienes tu propio lanzador personalizado. Es muy básico, pero puede agregar todas las personalizaciones que desee. Si desea profundizar en los lanzadores personalizados, le animo a que eche un vistazo a las aplicaciones de muestra en el Portal de desarrolladores de Android..