por Gilberto Pacheco Gallegos
Contenido introductorio sobre Aplicaciones Móviles con Android
Puedes ver el listado de mis sitios educativos en https://gilpgcl.github.io.
Los siguientes controles te permitirán navegar por todo el contenido del sitio.
Oculta el menú de navegación.
Muestra el menú de navegación.
Regresa a la página anterior.
Avanza a la página siguiente.
Ya viene instalado en las computadoras más nuevas, pero si la tuya no lo tiene, lo puedes descargar de https://www.microsoft.com/es-es/edge.
Lo puedes descargar de https://www.mozilla.org.
Lo puedes descargar de https://google.com/chrome.
Lo puedes descargar de https://openjdk.java.net/.
Lo puedes descargar de https://www.jetbrains.com/es-es/idea/download/.
Luego de instalar y cerrar IntelliJ, ábrelo, crea y ejecuta un proyecto de Kotlin para descargar actualizaciones y asegurarte que la herramienta quedó bien instalada.
Video sobre como crear un proyecto Kotlin y actualizar software.
Lo puedes descargar de https://developer.android.com/studio.
Debes seguir los siguientes pasos:
Descarga e instala Android Studio. Video de instalación.
Luego de instalar y cerrar Android Studio, ábrelo, crea y ejecuta un proyecto para descargar actualizaciones y asegurarte que la herramienta quedó bien instalada. Video sobre como crear el proyecto.
Crea un emulador de un teléfono o conecta un dispositivo real. Video sobre como crear el emulador.
Ejecuta el proyecto sobre el emulador de teléfono o el dispositivo real. Video sobre como ejecutar el proyecto.
Lo puedes descargar de https://git-scm.com/.
Por desarrollar.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Pendiente.
Conjunto ordenado de intrucciones que se ejecutan una tras otra para realizar una tarea.
Manera en que normalmente se utilizan los datos en el software. Normalmente consta de 3 pasos que se ejecutan uno tras otro:
Adquisición de datos
Procesamiento de datos
Despliegue de resultados
Obtener los datos que se van a procesar.
Aplicar un mecanismo de transformación a los datos para obtener resultados, también conocidos como datos de salida.
Mostrar los resultados obtenidos. En algunos casos los datos de salida se almacenan en dispositivos externos a una computadora.
Un lenguaje de programación es un conjunto de reglas precisas que se pueden usar para indicar a una computadora como realizar un algoritmo.
Un programa o código es la representación de un algoritmo usando un lenguaje de programación.
Las aplicaciones de cómputo normalmente se construyen usando uno o más lenguajes de programación.
Especificación de un algoritmo usando texto informal parecido al lenguaje humano.
Los pseudocódigos normalmente se usan como apoyo en el desarrollo de aplicaciones de cómputo.
Un diagrama de flujo es una forma de especificar un algoritmo usando dibujos con características bien definidas.
Los diagramas de flujo normalmente se usan como apoyo en el desarrollo de aplicaciones de cómputo.
Lenguaje de programación moderno que hace a los desarrolladores más felices.
Desarrollado por la empresa JetBrains y contribuciones de código abierto.
Está diseñado para interactuar con código de Java, por lo cual sus tipos de datos son compatibles.
El sitio oficial del lenguaje es https://kotlinlang.org/.
Puedes probar ejemplos sencillos en https://play.kotlinlang.org/.
String
Al tipo de datos que representa texto se le llama
String,
que es la traducción al inglés del término
cadena
.
En Kotlin los textos se representan con secuencias de caracteres delimitadas por los siguientes símbolos:
" "
El delimitador es el símbolo
comillas
("
).
En su interior puedes poner cualquier caracter, excepto comillas y salto de línea.
""" """
El delimitador son 3 comillas.
En su interior puedes poner cualquier caracter, excepto 3 comillas. Puede llevar saltos de línea.
La codificación de un texto es asignar a cada caracter del texto una combinación de varios 1 y 0. La combinación se puede expresar como un número.
kotlin usa la codificación UTF-16 de Unicode.
Para agregar un emoji desde Windows solo tienes que presionar la tecla con el logotipo de Windows al mismo tiempo que el punto ( +. ) y aparece un cuadro de diálogo que te permite seleccionar un emoji.
"Hola pp"
"😁¡¡¡¡A sus órdenes jefecita!!!!"
"""
Esta cadena
está
muy larga
"""
Hay una cadena sin caracteres:
""
conocida como
cadena vacía.
print
y println
La instrucción
print
muestra un texto en la salida.
La instrucción
println
muestra un texto en la salida y posteriormente hace un salto de línea.
Los textos se muestran sin los símbolos que los delimitan.
Instrucción | Salida |
---|---|
|
7!😁 |
|
Hola pp |
Primero se ejecuta el contenido de
fun main()
.
Los renglones de instrucciones se ejecutan de arriba para abajo.
En cada renglón, las instrucciones se ejecutan de izquierda a derecha.
Cada instrucción
println
es un renglón.
Una prueba de escritorio es la ejecución detallada y paso a paso de un programa.
Depurar es controlar la realización de una prueba de escritorio usando una herramienta de desarrollo.
Usaremos la herramienta IntelliJ IDEA Community para depurar los programas.
Nombre que tiene un elemento de un programa y que no se puede repetir en ciertas partes del código.
Empezar con una letra
(a
–
z
o
A
–
Z
)
con o sin acentos (á, ñ, por ejemplo)
o guion bajo (_
).
Los caracteres siguientes pueden ser cualquiera de los
anteriores o dígitos (0
–
9
).
_nombre
__nombre
Nombre24
_
TaChido
serenoMoreno
h54
Aunque no es obligatorio, normalmente en JavaScript los identificadores se escriben en Camel Case, donde las mayúsculas se usan para simular el inicio de una palabra. Por ejemplo:
estasSonCuatroPalabras
.
Una Lugar en donde se almacena un datoque puede cambiar durante la ejecución de un programa.
Para usar una variable, primero hay que declararla con una instrucción como la siguiente:
var miNombre = "pp";
Se declaran con
var
.
Tienen asociado un
nombre,
con la estructura de un identificador y normalmente empieza con minúscula.
En este caso, la variable se llama
miNombre
.
Tienen asociado un valor, que es un dato, el cual puede
cambiar durante la ejecución del programa. En este caso el valor es
"pp"
.
El
operador de asignación
(=
)
sirve para cambiar el valor de una variable, perdiendo el valor anterior.
El operando del lado izquierdo siempre debe ser una variable.
Cuando el nombre de una variable no aparece a la izquierda del operador de asignación, se usa su valor.
Una constante es similar a una variable, pero su valor no puede cambiar una vez asignado.
Normalmente el nombre se escribe en mayúsculas, usando guión bajo
(_
)
para separar palabras.
Se declaran con
val
Las variables o constantes declaradas en el mismo espacio no pueden tener el mismo nombre.
Conflicting declarations: var a: String, val a: String
Conflicting declarations: var a: String, val a: String
Cuando tratas de usar una variable o una constante no definida, obtienes un mensaje de error y se aborta la ejecución del programa.
readLine
La función readLine sirve para pedir datos.
Secciones de código que no es procesada y explica partes del programa para que se puedan entender mejor.
Normalmente se coloca en la línea inmediatamente antes del texto que explican, aunque también se coloca al final del renglón que explica.
Empieza con el texto
//
y termina con el final de la línea.
Usan una sola línea hasta su final.
Los
comentarios de una o más líneas
empiezan con el texto
/*
y terminan con
*/
.
Usan una o más líneas.
Comentario de una o más líneas que empieza con
/**
y explica la definición de un elemento del código.
También se le conoce como comentario de documentación.
Se coloca en la línea inmediatamente antes del texto que explica.
El contendo de este tipo de comentarios debe seguir las reglas de https://kotlinlang.org/docs/kotlin-doc.html.
Los bloques son listas de 0 o más instrucciones encerradas
entre llaves ({}
).
Cuentan como una instrucción.
Se ejecutan siguiendo el mismo orden de ejecución de Kotlin.
Cuando en su interior se declara una variable con
val
o con
var
,
solo existe dentro del bloque donde se declara.
Los bloques simples se ejecutan con
run
.
Una vez terminada la ejecución del bloque, todas las variables
declaradas con
val
o con
var
en su interior, son eliminadas.
Los bloques usan las variables o constantes declaradas fuera del bloque.
Las variables declaradas con
val
o con
var
dentro de un bloque ocultan a otras con el mismo nombre que estén
declaradas fuera del bloque.
Las variables declaradas con
const
o con
let
dentro de un bloque ocultan a otras con el mismo nombre que estén declaradas
fuera del bloque.
boolean
El tipo de datos boolean representa la lógica de valores verdaderos y falsos.
true
false
a == b
Devuelve
true
si los dos operandos representan el mismo texto, considerando
mayúsculas y minúsculas; en otro caso, devuelve
false
.
a != b
Devuelve
true
si los dos operandos representan textos diferentes, considerando
mayúsculas y minúsculas; en otro caso, devuelve
false
.
if
La estructura de control if permite usar el resultado de una condición lógica para controlar si un grupo de instrucciones debe o no ejecutarse.
La siguiente figura representa el comportamiento de la estructura de
control if
:
Si la condición evalúa a
true
,
el grupo de instrucciones se ejecuta.
Si la condición evalúa a
false
,
el grupo de instrucciones no se ejecuta.
if-else
if-else
La estructura de control if-else permite usar el resultado de
una condición lógica para controlar si dos grupos de instrucciones
deben o no ejecutarse. Un grupo de instrucciones va inmediatamente
después de la condición y el otro grupo va después de la palabra
reservada
else
.
La siguiente figura representa el comportamiento de la estructura de
control if-else
:
Si la condición evalúa a
true
,
el grupo de instrucciones después de la condición se ejecuta.
Si la condición evalúa a
false
,
el grupo de instrucciones después de la palabra reservada
else
se ejecuta.
La siguiente figura representa el comportamiento de la condicional múltiple:
La condicional múltiple es una lista en la que:
Cada elemento de la lista empieza con la palabra reservada
if
, seguida de una
condición entre paréntesis y un bloque de instucciones.
Los elementos de la lista se separan con la palabra reservada
else
.
Para ejecutar, empieza a revisar los elementos de la lista, empezando
por la primera condición. Se ejecuta el bloque de instrucciones que
corresponda a la primera condición que evalue a
true
y luego se termina la
estructura, continuando con las instrucciones que aparezcan después de
la lista.
Si ninguna condición evalúa a
true
, se continua con las
instrucciones que aparezcan después de la lista.
else
else
La siguiente figura representa el comportamiento de la condicional múltiple:
La condicional múltiple con else es una lista en la que:
Cada elemento de la lista empieza con la palabra reservada
if
, seguida de una
condición entre paréntesis y un bloque de instucciones.
Los elementos de la lista se separan con la palabra reservada
else
.
Al final de la lista va la palabra reservada
else
, seguida de un bloque
de instrucciones.
Para ejecutar, empieza a revisar los elementos de la lista, empezando
por la primera condición. Se ejecuta el bloque de instrucciones que
corresponda a la primera condición que evalue a
true
y luego se termina la
estructura, continuando con las instrucciones que aparezcan después de
la lista.
Si ninguna condición evalúa a
true
, se ejecuta el bloque
del else
final, continuando con
las instrucciones que aparezcan después de la lista.
else
Una parte de los números enteros de las matemáticas se pueden representar en Kotlin.
0
,
1
,
-1
,
2
,
-2
,
etcétera.
Hay distintos tipos de enteros; la diferencia es cuantos números pueden representar y el número de bytes que utilizan.
En Kotlin se usa el estándar IEEE 754 para números de punto flotante y en realidad son límites.
Un límite es un número que se representa a sí mismo, a
números ligeramente menores y ligeramente mayores; por ejemplo,
1.0
representa a
1.0
,
así como números muy cercanos, como podrían ser
1.000000000000000000000001
,
1.000000000000000000000002
,
0.999999999999999999999999
o
0.999999999999999999999998
.
Incluyen a los números enteros, pero con punto decimal como
1.0
,
2.0
,
101.0
.
El valor 0.0
representa a los
números cercanos a 0, ya sean positivos o negativos.
El valor +0.0
representa a los
números positivos cercanos a 0.
El valor -0.0
representa a los
números negativos cercanos a 0.
El valor
NaN
representa valores que no son un número; por ejemplo, los resultados de
0.0 / 0.0
y
Math.sqrt(-1.0)
(la raíz cuadrada de -1.0).
Hay distintos tipos de números de punto flotante; la diferencia es cuántos números pueden representar y el número de bytes que utilizan.
Representación de números en notación científica.
a + b
Cuando el primero de los 2 operandos del operador
+
es
string
,
se realiza una
concatenación,
que consiste en convertir los 2 operandos en texto y juntarlos.
a += x
Equivale a
a = a + x;
pero se ejecuta más rápido.
Nota que el primer operando debe ser una variable.
En el interior de las cadenas puedes poner la secuencia
${}
,
que permite poner en el interior de las llaves una expresión,
cuyo resultado convertido a texto sustituye a toda esta secuencia.
También puedes poner
$identificador
,
que permite poner en el interior de las llaves el nombre de una variable,
cuyo resultado convertido a texto sustituye a toda esta secuencia.
El operador binario
<
representa el orden natural de los datos. Si el valor a la izquierda
va antes que el de la derecha, el resultado es
true
;
en otro caso es
false
.
El operador binario
>
representa el orden invertido de los datos. Si el valor a la izquierda
va después que el de la derecha, el resultado es
true
;
en otro caso es
false
.
Entre 2 caracteres, el que tenga el menor código Unicode es el menor.
Entre 2 textos, el que aparezca primero en el diccionario es el menor.
En el ejemplo que sigue, el orden natural es:
"0" < "A" < "a" < "aa" < "ah" < "ai" < "b"
En el ejemplo que sigue, el orden natural es:
"aa" < "ah" < "ai"
x && y
es el operador Y en corto circuito.
Si
x
se evalúa a
false
,
el resultado es
x
y no se evalúa
y
;
de lo contrario, el resultado es
y
.
x || y
es el operador O en corto circuito.
Si
x
se evalúa a
true
,
el resultado es
x
y no se evalúa
y
;
de lo contrario, el resultado es
y
.
!x
es el operador NO.
Si
x
se evalúa a
true
,
el resultado es
false
;
de lo contrario, el resultado es
true
.
else
como operador lógico
Toma el valor de la expresión asociada a la condición que resulte verdadera
de acuerdo a las reglas de la condicional múltiple con
else
.
do-while
do-while
La siguiente figura representa el comportamiento de la estructura de
control do-while
:
La estructura de control do-while consta de:
La palabra reservada do
.
Sigue un bloque de instruciones.
Sigue la palabra reservada
while
.
Sigue una condición.
Mientras la condición evalúa a
true
,
la estructura de control sigue repitiendo el bloque de
instrucciones.
Cuando la condición evalúa a
false
,
se termina el ciclo.
El bloque de instrucciones se ejecuta al menos una vez.
Para ejecutar, se siguen estos pasos:
Se ejecuta el bloque se instrucciones
Se evalúa la condición.
Si la condición y si evalúa a
false
, se termina el ciclo
y se continúa con las instrucciones que sigan después de la
estructura; pero si evalúa a
true
,
se regresa al a ejecutar otra vez el bloque de instrucciones y luego
se evalúa la condición, para después ejecutar otra vez este paso y
las instrucciones aquí indicadas.
do-while
Hay distintos tipos de enteros. La diferencia es cuantos números pueden representar y el número de bytes que utilizan.
Una diferencia con las matemáticas es que son circulares. Si al número más positivo le sumas 1, obtienes el más negativo y si al más negativo le restas 1, obtienes el más positivo.
Tipo | Tamaño (bits) | valor mínimo | Valor máximo |
---|---|---|---|
Byte | 8 | -128 | 127 |
Short | 16 | -32768 | 32767 |
Int | 32 | -2,147,483,648 | 2,147,483,647 |
Long | 64 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Enteros sin signo de 8 bits, de 0 a 255.
Enteros sin signo de 16 bits, de 0 a 65535.
Enteros sin signo de 32 bits, de 0 a 232 - 1.
Enteros sin signo de 64-bits, de 0 a 264 - 1.
El tipo Float es más pequeño y el tipo Double es el más grande.
Los números a la izquierda son menores que los de la derecha.
0.0
Es el centro de la recta.
MIN_VALUE
Es el valor positivo más cercano a 0.
-MIN_VALUE
Es el valor negativo más cercano a 0.
MAX_VALUE
Es el valor numérico finito más positivo.
-MAX_VALUE
Es el valor numérico finito más negativo.
POSITIVE_INFINITY
Representa a todos los valores mayores que
MAX_VALUE
.
NEGATIVE_INFINITY
Representa a todos los valores menores que
-MAX_VALUE
.
Aparte del operador de asignación
(=
),
hay otros operadores que permiten cambiar el valor de una variable.
Al declarar una variable, puedes declarar su tipo.
También hay operadores de incremento y decremento en 1, pero son algo truculentos; es mejor usarlos solos, sin combinarlos con otros operadores.
El operador binario
<
representa el orden natural de los datos. Si el valor a la izquierda
va antes que el de la derecha, el resultado es
true
;
en otro caso es
false
.
El operador binario
>
representa el orden invertido de los datos. Si el valor a la izquierda
va después que el de la derecha, el resultado es
true
;
en otro caso es
false
.
En el ejemplo que sigue, el orden natural es:
0 < 3 < 8
En el ejemplo que sigue, el orden natural es:
0 < 3 < 8
Aquí se muestra el orden en que se ejecutan los operadores de JavaScript cuando se combinan en una expresión. Los que aparecen primero son los que se ejecutan primero. Una tabla similar para Kotlin está en desarrollo.
Orden | Descripción | Asociatividad | Operador | ejempo |
---|---|---|---|---|
1 | agrupamiento | n/a | (…)
|
(2 + 3)
|
2 | miembro | izquierda a derecha | ….… |
a.b |
…[…]
|
a[0]
|
|||
new | n/a | new …(…)
|
new Clase(0)
|
|
invocación a función | izquierda a derecha | …(…)
|
fn(x)
|
|
3 | incremento sufijo | n/a | …++ |
a++ |
decremento sufijo | n/a | …-- |
a-- |
|
4 | incremento prefijo | n/a | ++… |
++a |
decremento prefijo | n/a | --… |
--a |
|
not lógico | derecha a izquierda | !… |
!a |
|
not a nivel de bits | derecha a izquierda | ~… |
~a |
|
+ unario | derecha a izquierda | +… |
+a |
|
negación unaria | derecha a izquierda | -… |
-a |
|
typeof | derecha a izquierda | typeof …
|
typeof a
|
|
void | derecha a izquierda | void …
|
void a
|
|
delete | derecha a izquierda | delete …
|
delete a.nombre
|
|
5 | exponenciación | n/a | … ** …
|
a ** b
|
6 | multiplicación | izquierda a derecha | … * … |
a * b |
división | izquierda a derecha | … / … |
a / b |
|
residuo | izquierda a derecha | … % … |
a % b |
|
7 | suma | izquierda a derecha | … + … |
a + b |
resta | izquierda a derecha | … - … |
a - b |
|
8 | corrimiento de bits | izquierda a derecha | … << …
|
a << b
|
… >> …
|
a >> b
|
|||
… >>> …
|
a >>> b
|
|||
9 | relacional | izquierda a derecha | … < …
|
a < b
|
… <= …
|
a <= b
|
|||
… > … |
a > b |
|||
… >= …
|
a >= b
|
|||
in | izquierda a derecha | … in …
|
"nombre" in a
|
|
instanceof | izquierda a derecha | … instanceof …
|
a instanceof Array
|
|
10 | igualdad | izquierda a derecha | … == …
|
a == b
|
… != …
|
a != b
|
|||
… === …
|
a === b
|
|||
… !== …
|
a !== b
|
|||
11 | and de bits | izquierda a derecha | … & …
|
a & b
|
12 | xor de bits | izquierda a derecha | … ^ … |
a ^ b |
13 | or de bits | izquierda a derecha | … | … |
a | b |
14 | and lógico | izquierda a derecha | … && …
|
a && b
|
15 | or lógico | izquierda a derecha | … || …
|
a || b
|
16 | condicional | derecha a izquierda | … ? … : …
|
a ? b : c
|
17 | asignación | derecha a izquierda | … = … |
a = b |
… += …
|
a += b
|
|||
… -= …
|
a -= b
|
|||
… *= …
|
a *= b
|
|||
… /= …
|
a /= b
|
|||
… %= …
|
a %= b
|
|||
… <<= …
|
a <<= b
|
|||
… >>= …
|
a >>= b
|
|||
… >>>= …
|
a >>>= b
|
|||
… &= …
|
a &= b
|
|||
… ^= …
|
a ^= b
|
|||
… |= …
|
a |= b
|
|||
18 | yield | derecha a izquierda | yield …
|
yield a
|
19 | coma | izquierda a derecha | … , … |
a , b |
Hay que aprender a estructurar las expresiones matemáticas en el lenguaje de programación.
x = (-b + Math.sqrt(b**2 - 4*a*c)) / (2*a)
y = ((y2 - y1) / (x2 - x1)) * (x - x1) + y1
La clase
Math
.
while
while
La siguiente figura representa el comportamiento de la estructura de
control while
:
La estructura de control while consta de:
La palabra reservada while
.
Una condición.
Un bloque de instrucciones.
Para ejecutar, se siguen estos pasos:
Se evalúa la condición.
Si la condición evalúa a
false
,
se termina la ejecución del ciclo y continúa con las instrucciones
que aparecen después de la estructura; si la condición evalúa a
true
, continúa con el
siguiente paso.
Se elecuta el bloque de instrucciones.
Regresa al paso 1 y vuelve a ejecutar los pasos.
Mientras la condición evalúa a
true
,
la estructura de control sigue repitiendo el bloque de
instrucciones.
Cuando la condición evalúa a
false
,
se termina el ciclo.
while
ascendentewhile
ascendente de 2 en 2while
while
descendente de 2 en 2while
que no se ejecutawhile
descendente mal diseñadowhile
ascendente mal diseñadofor
for
La estructura de control for consta de la siguiente estructura:
for (inicialización; condición; paso) {
instrucciones
}
Equivale a la estructura de control:
{
inicialización;
while (condición) {
instrucciones
paso;
}
}
La sección de inicialización crea variables que solo existen
durante la ejecución del ciclo
for
y se eliminan una vez
terminado.
La sección de paso cambia el valor de las variables para que
hacer que la condición esté cada vez más cerca de evaluar a
false
.
for
when
when
when
y else
Las funciones son secuencias de instrucciones que tienen asociado un nombre.
El nombre de una función es un identificador.
Una función no se ejecuta ella misma; debe usarse el nombre de la función
seguida de paréntesis para que se ejecute. Por ejemplo, si una función se
llama
saluda
,
para hacer que se ejecute hay que ejecutar la instrucción
saluda()
A la instrucción que solicita la ejecución de una función, se le llama invocación de función.
Antes de que una función se ejecute, se suspende lo que se estaba haciendo y se marca el punto donde se invocó la función. Posteriormente se ejecuta la función y al terminar, se regresa al punto de invocación y se continúa con la siguiente instrucción.
Invoca: 2, 3 Invoca: 1, 3 Invoca: 0, 3 Devuelve 3 Devuelve: 4 Devuelve: 5 5
En esta lección se muestra como crear un proyecto de Android y ejecutarlo.
Sigue los mismos pasos que en las instrucciones para instalar Android Studio, per posteriormente el proyecto se sube a GitHub.
En el resto de la lección se muestran los archivos destacados.
Crear un proyecto para phone & tablet de tipo Empty Activity. Video sobre como crear el proyecto.
Las aplicaciones se pueden correr sobre un dispositivo real habilitado para desarrollo o en un emulador dentro de la computadora de desarrollo. En este último caso, si no tienes configurado un emulador, hay que crearlo. Video sobre como crear el emulador.
Ejecuta el proyecto sobre el emulador de teléfono o el dispositivo real. Video sobre como ejecutar el proyecto.
Necesitas una cuenta de email. Si no la tienes, crea una. Video sobre como crear una cuenta de Google.
Crea una cuenta en https://github.com. Video sobre como crear una cuenta de GitHub.
Recuerda que cuando hayas creado tu proyecto, debes configurar Git en tu computadora con las instrucciones:
Donde usuario_GitHub es tu usuario de GitHub.
Donde email_GitHub es el email registrado en GitHub.
Sube tu proyecto a GitHub desde Android Studio. Video sobre como subir el proyecto a GitHub.
En esta lección se muestra como crear un formulario y ejecutarlo.
Son los mismos pasos que en las instrucciones para el ejemplo de Android Studio.
Crear un proyecto para phone & tablet de tipo Empty Activity. Video sobre como crear el proyecto.
Las aplicaciones se pueden correr sobre un dispositivo real habilitado para desarrollo o en un emulador dentro de la computadora de desarrollo. En este último caso, si no tienes configurado un emulador, hay que crearlo. Video sobre como crear el emulador.
Modifica el proyecto con el contenido de los archivos que se muestran en esta lección.
Ejecuta el proyecto sobre el emulador de teléfono o el dispositivo real. Video sobre como ejecutar el proyecto.
En esta lección se muestra como crear un proyecto de Android que accese a un servicio en un servidor PHP y ejecutarlo.
Primero hay que crear un proyecto en un servidor PHP con el contenido de index.php. Video sobre como crear el proyecto PHP.
Crear un proyecto para phone & tablet de tipo Empty Activity. Video sobre como crear el proyecto.
Las aplicaciones se pueden correr sobre un dispositivo real habilitado para desarrollo o en un emulador dentro de la computadora de desarrollo. En este último caso, si no tienes configurado un emulador, hay que crearlo. Video sobre como crear el emulador.
Modifica el proyecto con el contenido de los archivos que se muestran en esta lección.
Ejecuta el proyecto sobre el emulador de teléfono o el dispositivo real. Video sobre como ejecutar el proyecto.