En este video te explicamos en detalle todo el proceso para publicar una Aplicación Android…
Proyecto ejemplo con Android Studio
4.
Proyecto ejemplo con Android Studio
En este tutorial, describiremos un proyecto Android que permite implementar una pantalla de presentación, además de añadir una librería para la creación de un archivo pdf en el directorio interno de descargas del dispositivo, a partir de los datos mostrados por pantalla. Todo esto se realizará con el nuevo IDE Android Studio 1.0.
El objetivo de este proyecto no es detallar el proceso de creación de un archivo pdf, sino presentar algunas funcionalidades que nos permitan una mayor adaptación al entorno Android Studio, centrándose principalmente en el proceso de añadir dependencias a un proyecto (en este ejemplo el uso de una librería para crear ficheros con extensión pdf).
Para desarrollar este caso práctico utilizaremos un proyecto de ejemplo, que permitirá, a partir de una serie de datos inicializados de una agenda telefónica (tipo, número y datos de contacto telefónico), mostrarlos en un componente de tipo ListView, permitiendo al usuario seleccionar el contacto, mostrando en un campo auxiliar información complementaria del contacto seleccionado. Además, se implementa un componente de tipo Button, que permitirá la creación de un archivo pdf con los datos mostrados por pantalla.
Como siempre, puedes descargar todo el código de este proyecto, con el botón que aparece al final de esta publicación. También podrás ver este proyecto explicado en el próximo Video Premium de esta serie.
Se comenzará en primer lugar por enumerar los elementos necesarios para el desarrollo del proyecto denominado «ListaContactos»:
- Clase SplashScreenActivity, que herede de la clase base Activity, encargada de lanzar una pantalla de presentación al iniciar la aplicación, proporcionando una mayor inmersión del usuario en la aplicación.
- Clase MainActivity, que herede de la clase base Activity, encargada de mostrar los contactos almacenados en un componente de tipo selección ListView.
- Clase Adaptador, que herede de la clase base ArrayAdapter, encargada de construir la vista de cada uno de los items que se mostrarán en el componente ListView.
- Clase Contacto (librería auxiliar), que permita crear nuevos objetos Contacto, formado por los métodos getters y setters (métodos de acceso a propiedades).
- Layout
activity_main.xml
, formado por un componente de tipo selección ListView, encargado de mostrar los contactos almacenados, un componente de tipo EditText que permitirá mostrar datos complementarios del ítem seleccionado por el usuario, y un componente de tipo Button, que posibilita la creación del fichero pdf. - Layout
itemcontacto.xml
, que construirá la vista de cada ítem del componente ListView. Se definen dos componentes de tipo TextView. - Layout
activity_splash_screen.xml
, formado por una componente de tipo ImageView, que mostrará el logotipo de la aplicación. - Librería «droidText.0.4.jar», que permita la creación de un fichero pdf con los datos de contactos almacenados.
Documentación código fuente
ListaContactos\app\src\main\java\com\academiaandroid\listacontactos\MainActivity.java
Clase MainActivity
Hereda de la clase base Activity, encargada de mostrar los contactos almacenados en un componente de tipo selección ListView, y que permitirá, además de mostrar los datos del contacto al seleccionar un ítem de la lista, almacenar en un archivo con extensión .pdf, los datos de los contactos mostrados por pantalla, con tan solo pulsar el botón «Crear PDF».
Métodos que implementa
Evento onClick, que permite crear un archivo pdf con los datos de contacto mostrados por pantalla:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
public void crearPDF(View v) throws DocumentException { Document documento = new Document(); File file = crearDirectorio(NOMBRE_DOCUMENTO); FileOutputStream ficheroPdf = null; try { ficheroPdf = new FileOutputStream(file.getAbsolutePath()); PdfWriter.getInstance(documento, ficheroPdf); documento.open(); Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.g4569_pdf); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); Image imagen = Image.getInstance(stream.toByteArray()); documento.add(imagen); Font fuente = FontFactory.getFont(FontFactory.COURIER, 20, Font.BOLD, Color.BLUE); documento.add(new Paragraph("Contactos telefónicos almacenados",fuente)); documento.add(new Paragraph("---------------------------------")); documento.add(new Paragraph("Contacto 1: " + contacto.getDatos() + "| |" + contacto.getNumero() + "| |" + contacto.getTipo())); documento.add(new Paragraph("Contacto 2: " + contacto2.getDatos()+ "| |" + contacto2.getNumero() + "| |" + contacto2.getTipo())); Toast.makeText(this, "Los datos mostrados en pantalla se han almacenado en el archivo " + file.getName().toString(), Toast.LENGTH_LONG).show(); } catch (Exception ex) { System.out.println("Error al crear pdf de contactos telefónicos: " + ex.getMessage()); } finally { documento.close(); } } - Método que devuelve un objeto File con el directorio creado junto con el archivo pdf: public File crearDirectorio(String nombreFichero){ File ruta = devuelveRuta(); File fichero = null; if (ruta != null) { fichero = new File(ruta, nombreFichero); } return fichero; } - Método que devuelve un objeto File con la ruta del directorio donde se creará el archivo pdf: public File devuelveRuta() { File ruta = null; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { ruta = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),NOMBRE_DIRECTORIO); if (ruta != null) { if (!ruta.mkdirs()) { if (!ruta.exists()) { return null; } } } } else { Toast.makeText(this, "La ruta indicada no existe.", Toast.LENGTH_LONG).show(); } return ruta; } |
Añadir Splash Screen a un proyecto con Android Studio
- En primer lugar será necesario crear una nueva Activity, a través de la ruta File > New… > Activity > Blank Activity, y definir tanto el nombre de la Activity como del layout.
- Se deberá añadir un componente de tipo ImageView al layout creado, y asignarle una imagen en la propiedad «src»:
- A continuación, dentro de la nueva clase SplashScreenActivity, se definirían las siguientes instrucciones:
1234567891011121314151617181920212223242526272829/*Clase SplashScreenActivity, que hereda de la clase base Activity, encargada de lanzar una pantalla de presentación al iniciar la aplicación.*/public class SplashScreenActivity extends Activity {/*Variable que inicializa el tiempo de retraso que simulará la carga de la aplicación.*/private static final long SPLASH_SCREEN_DELAY = 3000;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_splash_screen);/*Se declara e inicializa la clase TimerTask, que permitirá lanzar una nueva Activity al finalizar el tiempo de espera,además de cerrar la Activity actual. */TimerTask task = new TimerTask() {@Overridepublic void run() {Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);startActivity(intent);finish();}};/*Se declara e inicializa la clase Timer, que posibilita la programación de la tarea a lanzar.El objeto creado, invocará al método schedule(), que recibirá entre sus parámetros la tarea a realizary el tiempo de espera hasta la ejecución de dicha tarea.*/Timer timer = new Timer();timer.schedule(task, SPLASH_SCREEN_DELAY);}} - Por último, dentro del archivo AndroidManifest.xml, se deberá registrar la Activity como se muestra a continuación:
1234567891011121314151617181920[...]<applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" >[...]<activityandroid:name="com.academiaandroid.listacontactos.SplashScreenActivity"android:label="@string/title_activity_splash_screen" ><intent-filter><action android:name="android.intent.action.MAIN" /><!--La siguiente línea es la que permite que la Activityque se inicie al ejecutar la aplicación sea SplashScreenActivity.java.--><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>[...]
Permisos para crear un fichero pdf
En la siguiente línea se proporcionan permisos de escritura para la aplicación, que permitirá la creación de un fichero pdf en la memoria externa del dispositivo.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Monitorización de memoria:
Esta característica está disponible desde la opción Tools > Android > Memory Monitor. Dicha vista permite conectarse a una aplicación que se ejecuta en un dispositivo y controlar el uso de memoria en el tiempo.
En esta imagen se puede apreciar el consumo de memoria realizado por el proyecto de ejemplo, mostrando en todo momento la memoria libre y asignada.
Acceso a «File Explorer»
Para poder acceder a los directorios y carpetas del dispositivo, bastará con seleccionar el icono denominado Android Device Monitor, que podrá encontrarse en las herramientas del IDE Android Studio. Al pulsar sobre dicho icono, mostrará la vista DDMS (Dalvik Debug Monitor Server) desde la que poder acceder a la ventana «File Explorer», y así descargar el archivo pdf creado con la aplicación:
Añadir dependencia a proyecto de ejemplo
Para el proyecto que se ha descrito, ha sido necesaria la implementación de la librería «droidText.0.4.jar», siguiendo los pasos que se comentan a continuación:
- Se selecciona el módulo «app» del proyecto «ListaContactos».
- A continuación, se pulsa sobre el módulo con el botón derecho del ratón, y se selecciona la opción «Open Module Settings».
- Con el módulo seleccionado en la parte izquierda de la pantalla, se pulsa en la pestaña «Dependencies«, y a continuación en el símbolo «+» situado a la derecha de la pantalla.
- Entre las opciones del menú contextual, se selecciona la opción «File dependency», y posteriormente, se localiza el archivo .jar en el directorio «libs» (para este ejemplo se trata de la librería «droidText.0.4.jar»).
- Una vez seleccionado, se podrá visualizar dentro del archivo «build.gradle» del módulo «app» la nueva dependencia añadida:
1 2 3 4 5 6 |
[...] dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile files('libs/droidText.0.4.jar') } |
Nota: Para este proceso, previamente se ha copiado el archivo .jar dentro de la carpeta «libs» del módulo creado con el proyecto. Para obtener una visión más descriptiva del proceso, se recomienda revisar el tutorial»Añadir dependencias a proyecto en Android Studio«.
Descarga del Proyecto
DownloadEsta entrada tiene 3 comentarios
Los comentarios están cerrados.
[…] 4.Proyecto ejemplo con Android Studio […]
codigo fuente ?
Hola, está disponible para los usuarios premium: https://android.digitallearning.es/acceso-registro/
Saludos