domingo, 21 de mayo de 2017

TableLayout : agrupa componentes en filas y columnas. Un TableLayout contiene un conjunto de componentes de tipo TableRow que es el que agrupa componentes visuales por cada fila (cada fila puede tener distinta cantidad de componentes visuales)Cuando disponemos un control de Layouts de tipo TableLayout automáticamente crea cuatro componentes de tipo TableRow que los podemos ver en la ventana "Outline". Podemos borrar o agregar componentes de tipo TableRow según las necesidades de nuestro TableLayout:
Resultado de imagen para tablelayout
TableRow: TableRow es, a su vez, otra especialización de LinearLayout. Esta vez de un LinearLayout horizontal. Así que resulta evidente que, lo que se nos vende como una estructura de tabla, es en realidad un grupo de LinearLayout horizontales dentro de un LinearLayout vertical.Representa una fila de la tabla y que las vistas que contengan harán las veces de columnas. En concreto, cada vista que se añade a un TableRow va a parar a una columna diferente. Por ese motivo se suele decir que cada celda de un TableLayout sólo puede contener una vista. No obstante, nada impide que cualquiera de esas vistas sea un diseño y que contenga, a su vez otras vistas dentro.


android:layout_weight:Este atributo asigna un valor de “importancia” a una vista en términos de la cantidad de espacio que debe ocupar en la pantalla. Un valor de volumen más grande posibilita la expansión para llenar el espacio restante en la vista primaria. Las vistas secundarias pueden especificar una valor de volumen y, luego, todo espacio restante en la vista del grupo se asigna a los campos secundarios según la proporción de su volumen declarado. El volumen predeterminado es cero.Por ejemplo, si hay tres campos de texto y dos de ellos declaran un volumen igual a 1, mientras que al restante no se le asigna volumen, el tercer campo de texto sin volumen no se expandirá y solo ocupará el área que requiera su contenido. Los otros dos se expandirán de manera equitativa a fin de llenar el espacio restante después de que se midan los tres campos. Si al tercer campo se le asigna un volumen igual a 2 (en lugar de 0), se declara como más importante que los otros dos y obtiene la mitad del espacio restante total, mientras los primeros dos comparten el resto de manera equitativa.

Resultado de imagen para android:layout_weight

android:shrinkColumns:Indicará las columnas que se pueden contraer para dejar espacio al resto de columnas que se puedan salir por la derecha de la pantalla.
android:stretchColums:Indicará las columnas que pueden expandir para absorver el espacio libre dejado por las demás columnas a la derecha de la pantalla.el ancho de columna puede ser reducido para adaptarse a la tabla en su objeto primario. Si marcado como estirable, puede expandirse en anchura para adaptarse a cualquier espacio adicional. La anchura total de la tabla está definida por su contenedor principal.
Resultado de imagen para android:stretchColumns
android:layout_span:indica que la celda que tiene el parámetro ocupará varias columnas (similar al colspan de HTML). Los números separados por comas indican las columnas a las que afecta la propiedad, y el "*" indica que deberá afectar a todas las columnas.La cantidad de espacio asignado a cada elemento, se especifica en el androide: layout_span atributo, que nos dice el número de columnas que tendrá una duración de más.
Resultado de imagen para que es android:layout_span
android:padding:que permite establecer el padding de todos los laterales a la vez. Este atributo nos permite ahorrar código cuando queremos que el padding de los cuatro laterales tenga el mismo tamaño.


Resultado de imagen para android:padding
android:scaleType:que se utiliza para la ampliación de los límites de una imagen a los límites de la ImageView. 

TIPOS ESCALA

CENTER

Centrar la imagen en la vista, sino que se realice ninguna escala.

CENTER_CROP

Escala de la imagen de manera uniforme (mantener la relación de aspecto de la imagen) de modo que ambas dimensiones (anchura y altura) de la imagen será igual o mayor que la dimensión correspondiente de la vista (menos relleno).

CENTER_INSIDE

Escala de la imagen de manera uniforme (mantener la relación de aspecto de la imagen) de modo que ambas dimensiones (anchura y altura) de la imagen será igual o menor que la dimensión correspondiente de la vista (menos relleno).

FIT_CENTER

Escala de la imagen usando Matrix.ScaleToFit.CENTER
Matrix.ScaleToFit.CENTER: Calcular una escala que mantener la relación de aspecto src original, sino que también se asegurará de que src encaja completamente en el interior dst. Al menos un eje (X o Y) se ajuste exactamente. El resultado se centra dentro dst.

FIT_END

Escala de la imagen usando Matrix.ScaleToFit.END
Matrix.ScaleToFit.END: Calcular una escala que mantener la relación de aspecto src original, sino que también se asegurará de que src encaja completamente en el interior dst. Al menos un eje (X o Y) se ajuste exactamente. FIN alinea el resultado a los bordes derecho e inferior de DST.

FIT_START

Escala de la imagen usando Matrix.ScaleToFit.START
Matrix.ScaleToFit.START: Calcular una escala que mantener la relación de aspecto src original, sino que también se asegurará de que src encaja completamente en el interior dst. Al menos un eje (X o Y) se ajuste exactamente. START alinea el resultado a los bordes izquierdo y superior de DST.

FIT_XY

Escala de la imagen usando Matrix.ScaleToFit.FILL
Matrix.ScaleToFit.FILL: Escala en X e Y de forma independiente, de manera que coincida con el horario de verano src exactamente. Esto puede cambiar la relación de aspecto de la src.

MATRIX


Escala utilizando la matriz de la imagen cuando el dibujo.
android:textStyle: es el encargado de convertir el texto en negritas, cursivas o cursivas negritas.Utiliza los valores bold, italic y bold italic.
Resultado de imagen para android:textStyle
android:textSize:sirve para el tamaño de fuente.
Resultado de imagen para android:textSize
android:textColor: El comando android:textColor se encarga de otorgar color al texto. La declaración debe de darse dentro del TexView al que se le cambiara el color de texto. Se declara en la forma: android:textColor= y entre comillas el color en formato hexagecimal  # FF FF FF     esta esta en orden de RGB  que son las combinacion de  los colores de rojo verde y azul .también se pueden agregar colores alpha que viene siendo la transparencia y en código quedaría lo siguiente #26FFFFFF la transparencia es de 26 a dos dígitos cada uno
android:textColor:”# transparencia-rojo-verde-azul

include layout:Permite apuntar al fichero de diseño XML que apuntará a este otro diseño, y en tiempo de diseño éste se incluirá en el exterior del diseño que lo rodea.

lunes, 10 de abril de 2017

Como realizar una calculadora con Eclipse 


Primeramente abrimos lo que es el programa y seleccionamos en la parte de arriba donde dice File-New-Android Application Project,ponemos  nombre al proyecto y le damos "Next" hasta llegar a "Finish"

Una vez realizado el proyecto abrimos el activity_main.xml , seleccionamos todo el contenido y lo borramos y agregamos un linearlayout y todos los elementos que ocuparemos Textview,Edit text y Button.


se escriben los strings que se utilizaran para nombrar los botones de la aplicación en string.xml que se encuentra en la carpeta valúes 


Regresamos a Activity_main.xml y ponemos la función android:onClick="la operación que deseamos" a los botones que hayamos agregado , y se repite el procesamiento con los demás.
Nos vamos a la carpeta MainActivity.Java , y borramos el ultimo @Override y la parte de impor android.view.Menu , abajo de public class MainActivity extends Activity agregamos nuestras variables , después importamos nuestros EditText y TextView

Debajo de @Override que nos quedo le damos valores a nuestras variables
colocamos nuestro código para las operaciones importamos los View y repetimos lo mismo con las demás operaciones , Guardamos.


Ya acabado el procedimiento  abrimos el emulador y corremos la aplicación.





sábado, 25 de marzo de 2017

Clase Activity 

La  clase activity es un componente Android que se crea como una caja virtual. interfaz de usuario tiene que ser diseñado en la parte superior de esta caja para permitir al usuario interactuar con esta actividad. Esto es exactamente igual método de la caja del HTML, donde cada etiqueta HTML se considera como una caja. Los usuarios interactúan con una aplicación de Android con pantallas proporcionadas por la actividad.

Una aplicación para Android puede tener múltiples actividades y uno de ellos será designado como actividad principal. Si una aplicación para Android tiene más de una actividad, sólo uno de ellos puede estar en estado activo a la vez. Estos estados de la actividad son mantenidos por una pila devuelto la llamada pila.Actualmente se ejecuta la actividad sera en la parte superior de la pila.Cuando se inicia una nueva actividad la actividad más antigua se empuja hacia abajo la pila y la actividad actual se convierte en el elemento superior de la pila que se da acceso de los usuarios.




OnCreate ()
método onCreate () es el método de devolución de llamada primaria que se llama cuando se crea una actividad. Por ejemplo, las operaciones de inicialización y como proyección de diseño se llevarán a cabo.
En la proyección de diseño, View es un término importante que es una clase que ocupa el cuadro de actividad. Cada actividad tiene varios puntos de vista que vienen de ViewGroup. Hay algunas de ellas construidas en ViewGroup tales como widgets de forma y diseño. El usuario también puede crear su conjunto de vistas cubiertos por ViewGroup. Las vistas se muestran método setContentView()usando.



Funcion de SetContentView dentro de onCreate
La linea SetContentView(R.layout.main);señala que hay una clase estatica llamada R.layout y, que dentro de esa clase hay una constante entera llamada main que apunta a una vista definida por un fichero XML, el cual debe estar en el directorio ./res/layout.



 Este método solo se puede llamar desde onCreate,  además es un campo inmutable. Solo se puede fijar la vista de la actividad una sola vez. Es la forma que tiene Android de obligarnos a tener una única vista por actividad.

 ubicacion del archivo  MainAtivity.java.



Atributo @android:id

Independientemente de que tipo de Layout elijamos, tenemos propiedades comunes a todos, y cabe de destacar algunas de ellas:
android:id. Se trata de un número entero que sirve para identificar cada objeto View de forma única dentro de nuestro programa, cuando lo declaramos a través de un xml de resource podemos hacer referencia a la clase de recursos R usando una @, esto es imprescindible, ya que si no no podremos identificar nuestros elementos en nuestro programa para después usarlos y/o modificarlos. 
Ejemplos:  

  • android:id="@id/boton". Hace referencia a un id ya existente asociado a la etiqueta "boton", esto se usa para cuando usamos los Layout Relativos, ya que para ubicar los elementos, lo hacemos indicando por ejemplo que un botón lo insertamos a la derecha de otro pues bien ese otro se pone así.
  • android:id"@+id/boton2". Esto crea una nueva etiqueta en la clase R llamada "boton2".

Como se declaran los controles "DIBUJADOS" en el layout para que puedan utilizarse  en la clase Activity

Por norma general, una actividad está asociada a un Layout. Un Layout es la ventana o vista que el usuario ve en la pantalla: botones, textos, barras de desplazamiento, etc. La asociación se hace en el onCreate con el método llamado “setContentView”, como veremos en el siguiente código.
El aspecto de la actividad se aplica pasando un objeto View(Encargado de dibujar una parte rectangular en la pantalla, pueden contener más objetos View, además todos los componentes de la interfaz (botones, imagenes etc) heredan de View) al método Activity.setContentView(), que es el método encargado de dibujar la pantalla. Normalmente las vistas ocupan toda la pantalla, pero se pueden configurar para que se muestren como flotantes. Las actividades también pueden llamar a componentes que se mostrarán sobre su View (como dialogos o menús).


Metodo findViewById

En primer lugar se utiliza findViewById() para obtener el elemento EditText y añadir el valor del texto a intent.
Intent puede pasar una colección de distintos tipos de datos en forma de pares clave-valor llamado extras mediante el método putExtra(), que recibe el nombre de la clave en el primer parámetro y el valor en el segundo parámetro.es la que enlaza un recurso de la interfaz de usuario de una aplicación, con una variable en nuestro código. O simplemente se encarga de acceder a ese recurso para cambiar una de sus propiedades.
Supongamos, pues, que tenemos un layout con una veintena de widgets entre layouts, Buttons, EditText, TextView, ImageView… Y que en un momento dado del ciclo de vida de la actividad, tenemos que acceder a uno ó varios de ellos para cambiar sus propiedades. Podemos acceder a ellos del modo:
((EditText) this.findViewById(R.id.edittext_cliente)).setOnClickListener(…);
Aunque también podemos guardar el valor que devuelve la funciónfindViewById() en una variable, o variable miembro de la Activity para operar con ella varias veces a lo largo del citado ciclo de vida.

 propiedad @android:onClick
Este métodos nos permite capturar los clicks en determinadas vistas comúnmente botones, para ejecutar ciertas partes de nuestro código fuente y de esta forma realizar las acciones que queramos.

La práctica de hoy será muy simple un botón contador de clicks en Android.
Lo que haremos es agregar el botón el botón en nuestro layout principal y hacer la asociación correspondiente con su variable en Java. Para aquellos que no saben como hacer dicha asociación de elementos XML a variables en Java click aquí.

Códigos actuales.

Código XML

?
1
2
3
4
<relativelayout android:layout_height="match_parent" android:layout_width="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".ZASApp2MainActivity" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <button android:id="@+id/button1" android:layout_centerhorizontal="true" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="New Button">
</button></relativelayout>



Código JAVA
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example.zasapp2.zasapp2;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.widget.Button;
public class ZASApp2MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp2_main);
        Button boton1 = (Button)findViewById(R.id.button1);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_zasapp2_main, menu);
        return true;
    }
}
El código actual solo asocia el elemento XML a la variable correspondiente en java, en este caso un boton llamado boton1. 

Implementación de onClick

Lo siguiente es implementar el evento setOnClickListener en el botón esto para que dicho botón escuche los clicks que recibe. Esto se hace con el siguiente código. 
?
1
2
3
4
5
6
boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 
            }
        });
A los IDE como Andriod Studio o Eclipse facilitan mucho la escritura de este tipo de métodos por el auto-completado, ahora cada vez que el botón sea pulsado este método lo detectará y ejecutará todo el código que este escrito dentro de este, la parte donde escribiremos las acciones a realizar es dentro de las llaves del método onClick que contiene un atributo View llamado view(el nombre puede cambiar puede ser v, arg0, etc). Bien procedemos a escribir el código contador, es algo muy simple declarar una variable entero fuera del método onClick para que no se reinicie cada vez que se pulsa el botón y dentro del método onClick un autoincremental en 1, también necesitaremos mostrar el resultado en el botón con el método setText(variable); si quieres ver el pequeño tutorial sobre setText click aquí. 

Código final JAVA

?
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
package com.example.zasapp2.zasapp2;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class ZASApp2MainActivity extends ActionBarActivity {
    int clicks = 0; /*Declarado como variable "global" dentro de Activity
                     para ser usada en el metodo onClick esto evitara que
                     la variable se vuelva a cero cada vez que se da click
                     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp2_main);
        final Button boton1 = (Button)findViewById(R.id.button1);
        boton1.setText("No has pulsado el boton");
        boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            clicks++;
            boton1.setText("Has pulsado el boton "+clicks+" veces");
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_zasapp2_main, menu);
        return true;
    }
}
El botón mostrará inicialmente un mensaje "No has pulsado el botón" pero al pulsar el botón ejecutará el código dentro de onClick y el mensaje cambiará por "Has pulsado el botón N veces".Los resultados:

A partir de esto se pueden realizar gran cantidad de tareas, al pulsar un botón o elemento en el Layout.