25 may. 2012

[PROGRAMAS] CoachManager programa para entrenadores


ÚLTIMO AVISO: los problemas de la versión beta 1.0 con los permisos de administrador se solucionan con la nueva versión 1.1. Para instalarla se tendrá que hacer una instalación limpia (desinstalar todo sin dejar rastro de nada y luego instalar la nueva versión).


IMPORTANTE: debido a confusiones lo explico aquí. Antes de los enlaces que están al final del artículo pongo un password para descomprimir el programa (el manual no tiene nada). Esto lo hago para evitar, o al menos dificultar que nadie ponga el enlace a la aplicación sin que se sepa el creador que estuvo sus largos meses desarrollándolo.

Llevo ya varios días sin subir nada, la razón era que estaba preparando un viejo programa para gestión de entrenadores que hice hace tiempo y que lo tenía sin uso alguno. Os agradecería que si conocéis a alguien que le pudiera interesar este software de entrenadores se lo dijerais.

El programa para entrenadores lo llamé CoachManager y tenía intención de venderlo, pero le vi más contras que pros y lo dejé aparcado. No era mala idea, porque busqué por internet programas similares de gestión para entrenadores y el precio rondaba los 100€, y en verdad las horas invertidas en el proyecto merecería el precio. En la imagen siguiente podemos ver la pantalla inicial de la aplicación con varias estadísticas que nos muestra de inicio.


Ahora después de muchos meses me decido a publicarlo de forma gratuita (aunque acepto donaciones para mejorarlo) para que la gente pueda utilizarlo, aunque eso no significa que permita que dicho software sea vendido con ánimo de lucro. Si veo que tiene una buena aceptación iré mejorando el programa con actualizaciones que publicaré en este mismo blog por lo que recomiendo que lo visitéis de vez en cuando por si hay novedades.

Entre las características que encontraréis en el programa están las siguientes (pulsar las imágenes para poder verlas más grandes):

  • Gestión de plantillas: podremos diferenciar para cada equipo/temporada los jugadores que juegan esa temporada para posteriormente realizar estadísticas con sus resultados.
  • Gestión de entrenamientos: para muchos entrenadores, les resulta una característica imprescindible cuando son equipos no profesionales y quieren tener controlado que jugadores van y que jugadores faltan a los entrenamientos de cara a realizar las alineaciones.
  • Gestión de partidos: se pueden incluir partidos de liga, copa, o amistosos con datos independientes para cada uno de los jugadores que participen en el encuentro. Dichos datos posteriormente se utilizarán para realizar estadísticas, tanto de equipos, como para los jugadores.
  • Estadísticas de equipo: una de las características que más potencial tiene en la aplicación es la creación de estadísticas de equipo, donde se podrá comprobar la marcha del equipo en general en cada uno de los tipos de competiciones que disputa.

  • Estadísticas de jugador: ora de las características que más potencial tiene en la aplicación para visualizar el rendimiento de cada uno de los jugadores a lo largo de la temporada.



Antes de poner los enlaces del programa y del manual (aunque desde el mismo programa también se puede acceder a él) me gustaría poneros un enlace para los que quieran realizar una donación por PAYPAL con lo que penséis que vale de verdad esta aplicación y que me permitirá si hay suficientes fondos mejorar la aplicación con nuevas funcionalidades. 

Gracias de antemano.

VIDEO DEMOSTRACIÓN DE COACHMANAGER


Ayuda para mejorar CoachManager mediante una donación.
CIERTAS PERSONA HAN TENIDO PROBLEMAS EN LA INSTALACIÓN DEL PROGRAMA, OS AGRADECERÍA QUE TANTO SI OS FUNCIONA COMO SI NO LO ESCRIBÁIS EN UN COMENTARIO PARA YO SABERLO. MUCHAS GRACIAS POR VUESTRA COLABORACIÓN.

Para la ejecución de la aplicación se necesitan permisos de administrador si se instala en archivos de programa. Para más información ver el vídeo de la parte superior de este artículo donde explico el error que produce y como solucionarlo antes de que pase.
Aplicación: http://bamboo5.blogspot.com.es/2012/08/programas-coachmanager-11-nueva-version.html (para su instalación ejecutar setup.exe)

(Si algún enlace fallara escribir un comentario diciéndolo y lo repongo lo antes posible).


INSTALACIÓN LIMPIA TRAS UN ERROR DE POSIBLE FALLO DE INSTALACIÓN
1) Hay que asegurarse que se dispone de una conexión a internet (sinó no instala el sofware de Microsoft necesario).
2) Si ya se había instalado la aplicación hay que ir a "Panel de Control" >> "Agregar o quitar programas" (o su correspondiente opción en el sistema operativo que tengáis de windows) y desinstalar "CoachManager (APP)".
3) Ir a la carpeta donde se instaló (normalmente en "C:/Archivos de programa/CoachManager" y borrar todo su contenido y la carpeta misma.
4) Ejecutar setup.exe, y tras la instalación probar la ejecución de la aplicación.



El programa lo creé hace unos años y he tenido que modificar ciertas cosas que no he detectado que ocasionen problemas pero puede haberlos. Si detectáis algún error notificármelo para intentar arreglarlo. De todas formas, lo único que tiene más problemas es la creación de BACKUPS, el resto no he visto ningún error nunca. 
Gracias por la colaboración.



----------------------------------------------------------------

ENLACES DE OTRAS PÁGINAS QUE HACEN REFERENCIA AL SOFTWARE DE ENTRENADORES COACHMANAGER

FÚTBOL EN POSITIVO. Motivación para el entrenamiento de fútbol.
Blog que ofrece recursos y utilidades gratis para el entrenamiento de  fútbol.
ENLACE: http://futbolenpositivo.blogspot.com.es/2012/05/coach-manager.html

11 may. 2012

(ANDROID) Creación de la interfaz gráfica básica

Después de estar una semana sin portátil porque el ventilador dijo basta vuelvo a crear contenido para este blog.

En este artículo lo que explicaré de forma básica es como crear la interfaz gráfica, añadiendo elementos y poder acceder a ellos a través de código.

El diseño de las interfaces se pueden hacer o bien por código o mediante un xml donde pongamos inicialmente todos los componentes que queramos tener en nuestra interfaz (aunque posteriormente por código se puede también añadir o quitar). Lo bueno de hacer la interfaz mediante xml es que podemos ir viendo como quedará y además tenemos separado la interfaz con el comportamiento del mismo, por lo que podemos realizar cambios en la interfaz y no tener que tocar nada en el código que lo maneja.

Para añadir un xml a nuestro proyecto sobre el mismo desplegaremos el menú contextual con el botón derecho >> New >> Android XML File. En el campo "File" pondremos el nombre que queramos que tenga la interfaz y con la cual accederemos en nuestra aplicación a ella, por ejemplo yo la llamaré "l_page2".  Una vez elegido el nombre del archivo daremos a Finish para finalizar la creación del archivo.

Si ahora desplegáis la carpeta "res" y luego la carpeta "layout" veréis que aparece el nuevo archivo creado junto a otro llamado "main". Ese archivo está porque cuando se crea un proyecto se generan unos archivos iniciales para que el proyecto ya sea ejecutable. Se crea ese archivo que es la interfaz de la primera pantalla que se verá al ejecutarse. El código asociado a la primera pantalla (Activity) es "MainActivity.java" que está dentro de la carpeta "srt" y dentro del paquete de nuestra aplicación.


Ahora vamos a construir una interfaz sencilla en "l_page2". Lo abrimos y se nos abre la herramienta para construir la interfaz visualmente mediante el arrastre de componentes del listado de "Palette". Para este tutorial estoy usando la versión de Android 4.0.3 por lo que tal vez los controles sean diferentes a los que pongáis en otras versiones. 

Lo que primero haremos será añadir un layout donde poder añadir nuestros controles y posteriormente poder acceder al mismo y añadir/quitar elementos por código. En otro artículo ya entraré en detalle en los layouts pero por ahora utilizaremos el "LinearLaoyut (Vertical)" que añade cada uno de los elementos verticalmente (uno debajo del otro), y el "LinearLayout (Horizontal)" que añade cada uno de los elementos horizontalmente (todos en fila uno detrás del otro).

Usaré un LinearLayout (Vertical) el cual añadiré arrastrando desde la Palette hasta la vista de nuestra interfaz a la derecha. Para ver las propiedades de un elemento hay que seleccionarlo y en la pestaña de la derecha "Properties" aparecerán las propiedades del elemento de la interfaz, si no saliera se despliega el menú contextual del elemento, se va a la última opción "Show in" y luego se selecciona "Properties".


En todos los elementos que añadamos hay que ponerle un nombre único para poder luego acceder a ellos. Para cambiar el nombre hay que cambiar la propiedad ID. En el ejemplo yo voy a nombrarlo "@+id/page2_layout1". En este layout vamos a añadir un control para que muestre texto (TextView) y un botón (Button). Para ello tendremos que arrastrarlos desde la paleta de controles a dentro del layout que hemos creado. Os dejo a vosotros la búsqueda de los controles necesarios para que os familiaricéis con la paleta. Tendría que quedar algo parecido a la siguiente imagen:


Ahora tendremos que cambiar los ID de ambos controles que acabamos de añadir, al TextView lo llamo "@+id/page2_txthola" y al botón "@+id/page2_btndimehola".

Cada control puede tener diferentes propiedades, pero la mayoría comparten unas comunes como son las que explicaré a continuación: 

  • Background: es el fondo que tendrá el control, se puede añadir por ejemplo un drawable que representa un elemento visual. Inicialmente solo tenemos el del icono de la aplicación, pero se pueden añadir más añadiendo imágenes a la carpeta "drawable" que está en la carpeta "res" de nuestro proyecto (si no está se puede crear). En otro artículo ya hablaré del tema de las imágenes, porque se puede o bien añadir una imagen para todas los tipos de dispositivos o diferenciarlo según el tamaño del dispositivo donde se vea la aplicación.
  • Rotation: rota el control visualmente los grados que se le indican.
  • Text: es el texto que aparece en el control. Podemos o bien introducir un texto tal cual o añadir un "string" que nos servirá para luego poder tenerlo traducido en varios idiomas. Para añadir un string debemos darle al botón con los tres puntitos de la derecha en la propiedad y darle a "new string" o seleccionar uno que ya hubiéramos creado. Podemos ir a cambiar los valores de esos string en el archivo strings.xml dentro de la carpeta "values" qué está en la carpeta "res" de nuestro proyecto. De esta forma podríamos crear el texto "Aceptar" y utilizarlo en varios botones, y posteriormente en el xml cambiar "Aceptar" por "Ok" y cambiaría para todos los elementos que utilizaran ese string.
  • TextColor: representa el color del texto. Para añadir un nuevo color habrá que crear un "Android XML File" dentro de la carpeta "values" en "res". En "Resource Type" hay que seleccionar "Values" y se le da un nombre al archivo que contendrá los colores, por ejemplo "Colores". Posteriormente se abre el archivo creado y se añade un elemento "Color" en el botón "Add". En el elemento de color que creamos se tendrá que poner un nombre y un código de color RGB.
  • En el apartado Misc de la pestaña propiedades hay una serie de propiedades para controlar donde se mostrará el control. Layout gravity indica donde se sitúa el control dentro del elemento que lo contiene, por ejemplo podríamos poner que el botón se situara en el centro de la pantalla horizontalmente poniendo "center". Esta disposición tiene relación con el elemento que lo contiene, no es lo mismo poner que esté centrado dentro de un layout vertical que horizontal, en uno se centrará verticalmente y en el otro horizontalmente (lo mejor probar y ver a lo que me refiero). Layout Height y Layout Width representa el alto y ancho del control, podemos hacer que se adapte al contenido (wrap_content) o se adapte al contenedor donde está haciéndose más grande si fuera necesario (fill_parent). Los layout margin XXXX representan la separación que hay entre el control y su alrededor, por ejemplo si queremos que del elemento superior esté a 15dp, pondremos en Layout margin top el valor 15dp.

Hay muchas más propiedades, pero lo mejor es ir probando cada uno o mirar en la API de Google para más detalles.

Bien, ahora lo que hay que hacer es darle comportamiento a estos controles, hacer que cuando se pulse  el botón en el textview aparezca el texto "hola mundo".  Lo que tendremos que hacer es crear un Activity dentro de nuestro proyecto para que se vea nuestra interfaz y la podamos controlar. Simplemente hay que seleccionar nuestro proyecto, ir al menú contextual y luego New >> Android Activity. Lo importante de la pantalla que aparece es poner el nombre y darle a finish, para el ejemplo pondré "Page2". La Activity se crea inicialmente con el siguiente código:


El método "onCreate" es el primero que se cree cuando se cree la actividad. Ahí tendremos que poner nuestro código que se ejecutará al inicio de la actividad, por ejemplo, indicaremos que layout tiene que mostrar. Simplemente añadiremos al final del método la instrucción "setContentView(R.layout.l_page2);". Quedaría algo así:


Con esto lo que hemos hecho es que cargue en esa actividad el layout "l_page2" que hemos creado. Ahora lo que tendremos que hacer es obtener la referencia al textview y el button para poder darle un comportamiento. En el siguiente código se muestra el código final, solo destacar que para obtener la referencia a un control de la interfaz tendremos que utilizar el método "findViewById" al cual le pasamos el ID que identifica el control deseado y nos lo devuelve. No explicaré la teoría de eventos y listeners porque se supone que hay que tener una base con Java para poder programar en Android y no es el fin de este artículo.


Tal como tenemos el proyecto, si ahora le damos a ejecutar en un terminal no mostrará nuestra actividad, porque el programa iniciará la actividad que se creó automáticamente cuando creamos el proyecto. Podríamos haber hecho todo dentro de la actividad y layout que se crean por defecto, pero me parecía más correcto hacerlo todo nosotros aunque quede más raro. Para poder hacer que cuando se inicie la aplicación se abra nuestra actividad que hemos creado abriremos la actividad que se crea por defecto "MainActivity" dejaremos la actividad según se muestra en la siguiente imagen.


Lo que se hace es crear un objeto Intent que será el encargado de iniciar la actividad, en el constructor del Intent se le pasa la actividad que lo llama y como segundo parámetro la clase de la actividad que debe iniciar. El método startActivity simplemente inicia la actividad finalmente (En otro artículo hablaré más sobre los Intent y como pasar información entre actividades).

Por último, solo hay que ejecutar la aplicación en un dispositivo virtual o sobre un móvil conectado a nuestro ordenador para ver como ha quedado.