En su forma más básica, un iniciador es una aplicación que hace lo siguiente:
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:
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 MarketDebe tener lo siguiente instalado y configurado en su máquina de desarrollo:
Puede descargar el SDK y las herramientas de plataforma del portal de desarrolladores de Android..
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.
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
.
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.
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;
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 privadaaplicaciones; 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);
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); ArrayAdapteradaptador = 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);
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); );
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..
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..