Atom Blog

Como utilizar el AutoComplete en un EditText en Android con historial

En este corto post veremos como realizar el auto completado de palabras o frases dentro de un EditText en Android en Java

El AutoComplete en un EditText en Android es necesario cuando se requiere auto completar frases o palabras con las palabras que se han utilizado previamente. Para ello Android permite guardar un historial de las palabras introducidas a traves de las preferencias compartidas (SharedPreferences)

Antes que nada definimos el elemento AutoCompleteTextView dentro de nuestro archivo *.xml

<AutoCompleteTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textInput"
    android:layout_marginTop="108dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:editable="true"
    android:hint="Ingrese algo aqui"/>

Seguido de esto incluimos el siguiente código en la clase *.java

public static final String PREFS_NAME = "PingBusPrefs";
public static final String PREFS_SEARCH_HISTORY = "SearchHistory";
private SharedPreferences settings;
private Set<String> history;


Luego definimos el siguiente metodo:

private void setAutoCompleteSource()
{
    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.textInput);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
  this, android.R.layout.simple_list_item_1, history.toArray(new String[history.size()]));
    textView.setAdapter(adapter);
}

Guardamos cada valor introducido en el editor de texto:

private void addSearchInput(String input)
{
    if (!history.contains(input))
    {
        history.add(input);
        setAutoCompleteSource();
    }
}

Utilizamos el siguiente metodo para guardar las palabras introducidas en las preferencias compartidas:

private void savePrefs()
{
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putStringSet(PREFS_SEARCH_HISTORY, history);

    editor.commit();
}

Configuramos las siguientes variables:

settings = getSharedPreferences(PREFS_NAME, 0);
history = settings.getStringSet(PREFS_SEARCH_HISTORY, new HashSet<String>());

setAutoCompleteSource();

final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.textInput);
textView.setOnKeyListener(new View.OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {

            addSearchInput(textView.getText().toString());
            return true;
        }
        return false;
    }
});

@Override
protected void onStop()
{
    super.onStop();

    savePrefs();
}

Como conectar una Base de Datos en MySQL con Netbeans 7

En este nuevo post veremos como conectarnos a una base de datos en MySQL desde Netbeans 7.1.

Para poder crear la conexion necesitaremos tener los siguientes componentes:
-Netbeans 7.1.
-Se necesitara tener instalado: MySQL.
-El driver para conectarnos a la base de datos: mysql-connector-java-5.0.8-bin.jar.

Una vez descargado el driver lo copiaremos a la carpeta donde se encuentra instalado el jdk, en mi caso es:

C:\Program Files (x86)\Java\jdk1.6.0_31\jre\lib\ext

El siguiente paso es reiniciar el Netbeans.

Ahora nos dirigimos a la pestana de netbeans llamada Services, como se puede observar en la siguiente imagen y hacemos click derecho sobre Drivers, y pulsamos en New Driver.


Luego pulsamos en add.


Seleccionamos el archivo mysql-connector-java-5.0.8-bin.jar y pulsamos en ok.

Deberia mostrarse de la siguiente manera:


Nuestro siguiente paso es crear la conexion. Haremos click en Connect Using como se observa en la siguiente imagen.

Escribiremos los siguientes datos:
Host: localhost
Database: mysql
Port: 3306
User Name: root
Password: 12345
Como se muestra a continuacion:






Como cambiar el tipo de letra (fuente) en una aplicacion movil para Android en Android Studio



En este post mostraremos como cambiar el tipo de fuente o tipo de letra de los Botones, EditText y TextView en una aplicacion movil en Android desde Android Studio. Esto es necesario cuando queremos crear una aplicacion movil personalizada y dar un toque unico.

Primero descargamos los tipos de fuentes que queramos utilizar en nuestra aplicacion movil en formato .tff. Yo los descargo de: https://fonts.google.com/ y los colocamos dentro de la carpeta "fonts" (si no existe la creamos) dentro de "assets" en la ruta de la aplicacion. Quedando de la siguiente manera: "main/assets/fonts".

Para este ejemplo definimos el archivo de interfaz de usuario prueba.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="@color/white">

<Button
    android:id="@+id/boton_prueba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Boton de prueba"
    android:textSize="24sp"
/>

<EditText
    android:id="@+id/edit_text_prueba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="EditText de prueba"
    android:textSize="24sp"
/>

<TextView
    android:id="@+id/text_view_prueba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView de prueba"
    android:textSize="24sp"
/>

</LinearLayout>



Luego, dentro del metodo onCreate() instanciamos los tipos de fuente agregados a la carpeta "fonts" previamente con la Clase "Typeface" y los definimos o seteamos para cada uno de los componentes del archivo prueba.xml definido anteriormente.


protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prueba);

       Button nameButton = (Button) findViewById(R.id.boton_prueba);
       TextView nameTextView = (TextView) findViewById(R.id.text_view_prueba);
       EditText nameEditText = (EditText) findViewById(R.id.edit_text_prueba);
        
Typeface face = Typeface.createFromAsset(getAssets(), "fonts/JosefinSans-Regular.ttf");
Typeface faceBold = Typeface.createFromAsset(getAssets(), "fonts/JosefinSans-Bold.ttf");
Typeface faceSemiBold = Typeface.createFromAsset(getAssets(), "fonts/JosefinSans-SemiBold.ttf");

nameButton.setTypeface(face);
nameTextView.setTypeface(face);
        nameEditText.setTypeface(face);
}

Como alternar los colores de fondo en las filas de una lista (ListView) en Android



Cuando definimos listas en Android es muy comun encontrarnos con el problema de que los datos estan un poco desordenados y no se aprecian correctamente como deberian. Es por ello que algunos desarrolladores optan por colocar colores de fondo alternados a la lista para que la informacion se pueda apreciar de mejor manera.

Primero tendremos que definir la lista (ListView) en la interfaz de usuario .xml. Definiremos el archivo prueba.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="@color/white">

<ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list_view_prueba"
 />

</LinearLayout>

Ahora en la clase respectiva se procede a instanciar la lista de la siguiente manera:

ListView listaPrueba = (ListView) findById(R.id.list_view_prueba);

Luego dentro del evento onCreate se realiza la colocacion de los colores de fondo de manera alternada:

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prueba);

        ListAdapter adaptador1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayItems){
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                     View view = super.getView(position,convertView,parent);
                    if (position %2 == 1) {
                        view.setBackgroundColor(Color.parseColor("#26CCCCCC"));
                    } else {
                        view.setBackgroundColor(Color.parseColor("#00FFFFFF"));
                    }
                    return view;
                }
            };
           listaPrueba.setAdapter(adaptador1);

}


donde:

arrayItems es el array de elementos que estaran en la lista, por ejemplo:

String[] arrayItems = new String[]{"item1", "item2", "item3", "item4", "item5"};


Una vez realizado todo el proceso tendremos una lista con colores de fondo alternados para una mejor visualizacion de la informacion.



Como habilitar los eventos de click o Click Listener de un Button, TextView o EditText en Android



En nuestras aplicaciones moviles es muy comun utilizar botones o campos de texto que permiten mostrar e ingresar datos para hacer mas interactiva la aplicacion.

Los eventos desencadenados al presionar o hacer click sobre alguno de estos componentes son manejados desde la logica de la aplicacion, es decir desde los archivos .java.

A continuacion mostraremos un boton, un editText y un textView con sus respectivos eventos click o Click Listeners.

Primero definimos los componentes de la aplicacion en la interfaz de usuario, es decir en los archivos .xml. En este caso definiremos el archivo prueba.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="@color/white">

<Button
    android:id="@+id/boton_prueba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Boton de prueba"
    android:textSize="24sp"
/>

<EditText
    android:id="@+id/edit_text_prueba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="EditText de prueba"
    android:textSize="24sp"
/>

<TextView
    android:id="@+id/text_view_prueba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView de prueba"
    android:textSize="24sp"
/>

</LinearLayout>

Ahora en la clase que controladora de esta interfaz colocaremos el siguiente codigo dentro del evento onCreate():

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prueba);

       Button nameButton = (Button) findViewById(R.id.boton_prueba);
       TextView nameTextView = (TextView) findViewById(R.id.text_view_prueba);
       EditText nameEditText = (EditText) findViewById(R.id.edit_text_prueba);

       nameButton =.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //CODE EVENTO CLICK
            }
       });

       nameTextView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //CODE EVENTO CLICK
            }
        });

        nameEditText.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //CODE EVENTO CLICK
            }
        });

}


Listo!! ahora podremos ejecutar cualquier codigo al presionar algun componente sobre la interfaz de usuario de Android.

Como abrir una nueva ventana o clase (Activity) in Java Android


Cuando estamos empezando a programar aplicaciones moviles para Android necesitamos tener algunos conocimientos basicos de la programacion orientada a objetos y entender el funcionamiento de las clases .java (la logica de la aplicacion) y los archivos .xml (la interfaz de usuario).


En este post explicaremos la manera de abrir una nueva ventana, clase o Activity en Android. La manera de hacerlo en muy sencilla como se muestra en las siguientes lineas:

Definiremos un nueva Intent y a continuacion lo iniciaremos:

Intent intent = new Intent(Splash.this,Tutorial.class);
startActivity(intent);


donde:

Splash es la clase .java actual.
Tutorial es la clase .java que se quiere abrir.

Como Utilizar Imagenes en Matlab


En este nuevo post veremos algunas cosas muy utiles al momento que necesitemos trabajar con imagenes en matlab, aprenderemos como leer imagenes desde la computadora, como mostrarlas en un axes y como escribirlas (guardar) en la computadora.

Una imagen en blanco/negro en matlab es representada por una matriz de dimensiones nxm, donde "n" representan las filas y "m" las columnas.
Para representar una imagen a color en matlab se necesitaran 3 matrices representando los colores basicos.

Para leer una imagen desde la computadora aplicamos la siguiente sentencia:

ruta = 'C:\Users\Rafa\Desktop\imagen1.jpg';
A=imread(ruta);

La variable "A" guardara la matriz de datos de la imagen. Para poder representar la imagen leida en una ventana utilizamos la siguiente sentencia:

imshow(A);

Para obtener el tamano de la imagen utilizamos:

size(A);

lo que representa que existen 3 matrices para cada uno de los colores basicos y el tamamo 375x600.

Podemos aplicar la sentencia siguiente para obtener informacion detallada de la imagen leida.

whos A;

Se puede observar algunos parametros obtenidos de la imagen leida como su nombre, su tamano, los bytes utilizados para representar la matriz, asi como su clase (clase de imagen) que en este caso es uint8 y sus atributos.

Clases de Imagenes:

char: Para caracteres (2 bytes por elemento).
double: Doble precision, numeros de punto flotante en un rango de -10^308 hasta 10^308 (8 bytes por elemento).
int8: Enteros de 8 bits en el rango [-128, 127] (1 byte por elemento).
int16: Enteros de 16 bits en el rango [-32768, 32767] (2 byte por elemento).
int32: Enteros de 32 bits en el rango [-147483648,2147483647] (4 byte por elemento).
logical: Representada por valores de 0 y 1 (1 byte por elemento).
single: Numero de punto flotante de precision simple, con valores entre [-10^38, 10^38] (4 bytes por elemento).
uint8: Enteros de 8 bits en el rango [0, 255] (1 byte por elemento).
uint16: Enteros de 16 bits en el rango [0, 65535] (2 byte por elemento).
uint32: Enteros de 32 bits en el rango [0, 4294967295] (4 byte por elemento).

Para guardar una imagen en la computadora utilizaremos las siguientes sentencias:

imwrite(f, 'nombre_imagen.jpeg');

Ademas se puede utilizar la sentencia siguiente para definir la calidad de la imagen que vamos a guardar, el valor de "q" varian de 0 a 100 representando la calidad respectivamente.

imwrite(A, 'nombre_imagen.jpeg','quality', q);

Para poder recuperar informacion correspondiente a la imagen que acabamos de guardar aplicamos lo siguiente:

imfinfo nombre_imagen.jpeg;



Existen algunos comandos utilizados para tranformar entre las distintas clases de imagenes, como se  muestra a continuacion:

Nuestra imagen original guardada en A es:
Al aplicar:

 im2bw(A)

se obtiene:



Se tiene otros tipos de transformacion como:

im2uint8(A);

im2uint16(A);

im2double(A);







Como Hacer una Animacion de Movimiento de Texto En HTML



En este post mostraremos como realizar una animacion sencilla que refleje los distintos tipos de movimientos que se puede hacer con los textos.

Crearemos un contenedor en el cual escribiremos 7 nombres que representan a: Java, Matlab, HTML, Threads, GUI, Button, JSF, cada nombre tendra un color y un efecto de movimiento diferente.

Para este ejemplo haremos todo desde HTML y JavaScript, no utilizaremos CSS.

Haremos uso del script "Kinetic", el cual nos brindara un ambiente de javaScript, creando stages, layers y utilizaremos algunos de sus metodos para lograr los efectos que se obtuvieron en el ejemplo:

El ejemplo se desarrollara dentro de las etiquetas <body> y </body> y seguira de la siguiente manera:

Para agregar el script Kinetic aplicamos la siguiente sentencia:

<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.7.4.min.js"></script>

Una vez que se importa el script, se continua programando en JavaScript dentro de las sentencias siguientes:

<script>
       .........codigo en javascript.........
</script>

E incluimos el siguiente codigo que permite agregar un contenedor donde incluiremos nuestros textos.

//Creamos una nueva etapa llamada "stage" 
 var stage = new Kinetic.Stage({
     container: 'container', 
     width: 600,
     height: 340 
 });

//Creamos nueva capa sobre la que colocaremos los easings 
 var layer = new Kinetic.Layer();

Creamos los textos al los que les pondremos los efectos de movimiento.
//Creamos la lista que se mostrara con su respectivo nombre, //color y efecto (easings).  
var easings = [ {
easing: 'ElasticEaseOut', name:'Java', color:'blue'}, 
   {easing: 'BackEaseIn', name:'Matlab', color:'red'}, 
   {easing: 'EaseOut', name:'HTML', color:'green'}, 
   {easing: 'EaseInOut', name:'Threads', color:'blue'}, 
   {easing: 'BackEaseIn', name:'GUI', color:'yellow'}, 
   {easing: 'EslasticEaseIn', name:'Button', color:'red'}, 
   {easing: 'BackEaseInOut', name:'JSF', color:'orange'} 
 ];  

Como se puede observar en las sentencias anteriores los efectos vienen daros por: 'BackEaseIn, EaseOut, EaseInOut, etc. Existen otros efectos aparte de estos.

Nuestro ejemplo se veria de la siguiente manera:

Para descargar el proyecto completo seguir los siguientes enlaces:


Como Crear Menu Vertical en HTML y Decorar con CSS


En este post ensenaremos como crear un menu vertical en html y decorarlo con css a partir de una lista simple creada con el siguiente codigo que lo colocaremos entre las etiquetas <body> y </body>.

<body>
<div id="menuVertical">
     <ul>   <!--Define la lista en 
          <li>   <!--Define cada elemento de la lista-->
          <li> <a href="http://aflrovvs.blogspot.com/search/label/java">  Java </a> </li>
          <li> <a href="http://aflrovvs.blogspot.com/search/label/matlab"> Matlab </a> </li>
          <li> <a href="http://aflrovvs.blogspot.com/search/label/html">  HTML  </a> </li>
     </ul>
</div>
</body>

Lo cual se vera de la siguiente manera:
Para hacer que la lista luzca como un verdadero menu vertical aplicaremos algunos estilos con css, en los que se incluye codigo para eliminar las vinetas, eliminar el subrayado, colocar paneles detras de cada elemento, entr otros.

Para poder eliminar las vinetas colocaremos:

list-style-type:none;

Dentro de la funcion  #menuVertical ul{..} en la plantilla de nuestro blog dentro de la funcion body {..}
En esta misma funcion definimos el color de fondo de cada elemento de menu y el color de los bordes de los paneles de los elementos de menu respectivamente:

 background:#CEFBF6; 
 border:solid 5px #7FFEF1;

El radio de borde viene dado por:

border-radius:9px;

Para eliminar el subrayado colocaremos la sentencia siguiente:

text-decoration: none;

Dentro de la funcion #menuVertical ul a{..} en la plantilla de nuestro blog dentro de la funcion body{...} debajo de la funcion  #menuVertical ul {..}.
En esta misma funcion colocamos el tamano de la fuente que viene definida por:

font-size: 20px;

Para crear el efecto de cambio de contraste al colocar el mouse sobre el menu aplicamos el siguiente codigo que lo unico que hace es mostrar una inversion de los colores para cada caso, es decir cuando no se coloca el mouse sobre el menu el color de cada elemento de menu esta variando de negro hasta blanco y al colocar el mouse sobre el elemento de menu, este varia de blanco a negro, lo que da el efecto de seleccionar tal elemento de menu.

#menuVertical li a{ 
    color:#06F; 
    margin:0px; 
    background:linear-gradient(#fff 0%,#dedede 100%); 
    background:-moz-linear-gradient(#fff 0%,#dedede 100%); 
    background:-ms-linear-gradient(#fff 0%,#dedede 100%); 
    background:-o-linear-gradient(#fff 0%,#dedede 100%); 
    background:-webkit-linear-gradient(#fff 0%,#dedede 100%); 
    border:solid 1px #f9f9f9; 
    border-radius:15px; 
    padding:10px; 
 } 

 #menuVertical li a:hover{ 
     background:linear-gradient(#DEDEDE 0%, #FFF 100%); 
     background:-moz-linear-gradient(#DEDEDE 0%, #FFF 100%);
     background:-ms-linear-gradient(#DEDEDE 0%, #FFF 100%);
     background:-o-linear-gradient(#DEDEDE 0%, #FFF 100%); 
     background:-webkit-linear-gradient(#DEDEDE 0%, #FFF 100%); 
     border-radius:15px; 
     border:solid 4px #333; 
     color: red; 
 }

Al aplicar estas sentencias y las demas que vienen incluidas en la carpeta del proyecto, nuestro menu deberia verse de la siguiente manera:

Ademas se lo puede apreciar en la parte izquierda de nuestro blog.

Para descargar el proyecto seguir los enlaces siguientes:



Como crear un Menu con Submenus en HTML decorado con CSS


En este nuevo post crearemos un menu que contenga submenus, cada uno de los cuales estara enlazado a paginas de este blog.
Utilizaremos herramientas de html/css para poder dar ciertos efectos a los menus.

Para crear el menu utilizaremos el siguiente codigo, que estara dentro de la etiqueta <body>.

<div id='subMenu'>
    <ul>   <!--Define la lista en si--> 
        <li> <a href="http://aflrovvs.blogspot.com/">  Inicio </a> </li>
        <li>
            <a href="http://aflrovvs.blogspot.com/p/descargas.html"> Descargas </a>
                <ul>
                     <li> <a href="https://skydrive.live.com/#cid=CB2C976AE9CB5D07&id=CB2C976AE9CB5D07%21278"> SkyDrive </a> </li>
                     <li> <a href="https://www.dropbox.com/sh/kotx2ml5a097vlv/C1YPyPd7QL"> DropBox </a> </li>
                    </ul>    
                </li>
                <li> <a href="http://aflrovvs.blogspot.com/p/sobre-mi.html">  Sobre Mi  </a> </li>
                <li> <a href="http://aflrovvs.blogspot.com/p/contacto.html">  Contacto </a> </li>
            </ul>
</div>

El cual contendra los submenus con sus respectivos enlaces y quedara de la siguiente manera:

Como Insertar Imagenes y Crear Menus Horizontales con HTML/CSS



El primer post dedicado al lenguaje HTML es sobre como insertar imagenes que esten alojadas en internet y la creacion de menus horizontales disenados con herramientas de CSS.

Este post en particular muestra el diseno del banner principal y del menu horizontal alojado en este blog.

El codigo consta de 3 partes: la primera es la colocacion del banner principal, seguida de la creacion del menu , para luego agregar ciertas caracteristicas de diseno al menu creado.

Para Insertar la Imagen utilizaremos el codigo siguiente:

<center>
        <div id="carga">
            <img src="http://drive.google.com/uc?export=view&id=0B1kFwZU59fWZYVRKMWUycFlJenM"              bord  ="0" height="197" width="1000" ""/>
        </div>
</center>

Estas lineas se colocan debajo de donde empieza <body>, la direccion de la imagen es insertada justo en medio de las comillas de la seguiente sentencia <img src=" ">. La altura y ancho de la imagen se controlan con "height" y "width".

<center> y </center> son utilizadas para centrar la imagen.

Para la creacion del menu se utilizan las siguientes lineas de codigo, las cuales se colocan abajo del codigo utilizado para insertar la imagen, dentro de la etiqueta <body>.

<div id='cssmenu'>
            <ul>   <!--Define la lista en si--> 
                <li> <a href="http://aflrovvs.blogspot.com/">  Inicio </a> </li>
                <li> <a href="http://aflrovvs.blogspot.com/p/descargas.html"> Descargas </a> </li>
                <li> <a href="http://aflrovvs.blogspot.com/p/sobre-mi.html">  Sobre Mi  </a> </li>
                <li> <a href="http://aflrovvs.blogspot.com/p/contacto.html">  Contacto </a> </li>
            </ul>
</div>

En la primera linea colocamos el nombre de nuestro menu: "cssmenu".
En la segunda linea creamos la lista que contendra cada elemento del meno con la etiqueta "<ul>".
Desde la tercera linea a traves de la etiqueta "<li>" se puede crear cada uno de los elementos del menu, sobre los cuales se colocan su respectivo nombre y su enlace al cual nos dirigiremos al hacer click. En nuestro caso cada uno de los enlaces son paginas creadas previamente en mi blog.

Quedando de la siguiente manera:

Como se observa el menu se crea de una manera simpre y en forma vertical, para convertir el menu a una forma horizontal y con colores y sombras aplicamos las siguientes sentencias:

Estas funciones se colocan entre las etiquetas <style type="text/css"> y  </style> por debajo de <title></title>.
Esta primera funcion pinta del color azul el panel de fondo donde colocaremos el menu, ademas redondea el panel creado pintado de azul.

#cssmenu { width:100%; 
   background-color: #62a8f6; 
   border-top-left-radius:34px; 
   border-top-right-radius:34px; 
   border-bottom-left-radius:34px; 
   border-bottom-right-radius:34px;
}

Esta funcion acompanada de la siguiente colocan la lista de una forma horizontal, ademas colocan las coordenas donde se situara el menu y tamano de paneles que lo contendran.

#cssmenu ul { 
    list-style-type:none; 
    height: 40px; 
    width: 534px; 
    margin: auto; 
    position:relative; 
    display:block; 
}

Esta funcion en la 3 linea coloca el color de cada elemento de menu, el la 4 linea asigna la separacion que mantendran los elementos del menu, en la 5 linea pondremo un borde a cada elemento de menu con su repectivo color y en la ultima linea redondeamos las esquinas de los paneles que contienen a lso elementos de menu.

#cssmenu li a{ 
    float: left; 
    background-color: #d4eaff;
    margin:0px; 
    border:solid 1px #f9f9f9; 
    border-radius:15px; 
 }

Esta funcion es la encargada de crear el efecto de cambiar de color que realiza el menu al colocar el puntero sobre cada uno de los elementos de menu.
En la segunda linea asignamos el color al que cambiara, en nuestro caso sera el azul de fondo.
En la tercera linea asignamos el nivel de redondeado.
En la ultima linea colocamos un borde de color negro.

#cssmenu li a:hover { 
    background-color: #6285f5; 
    border-radius:15px; 
    border:solid 1px #000; 
 }

Esta ultima funcion se encarga de realizar algunas funciones como quitar el subrayado con la linea 5.
Ademas en las lineas 2 y 3 controlamos el largo de los paneles de cada unos de los elementos de menu.
En la linea 4 establecemos el ancho de los paneles que contiene los elementos de menu.

 #cssmenu ul a { 
    padding-right: 32px; 
    padding-left: 32px; 
    display: block; line-height: 40px; 
    text-decoration: none;  
    font-family: Georgia, "Times New Roman", Times, serif, fantasy; 
    font-size: 18px; 
    color: #FC4A04; 
 }

El programa quedara de la siguiente manera:

Para descargar el proyecto completo seguir cualquiera de los enlaces siguientes:


Como cargar Imagenes en Axes en GUI en Matlab y convertirlas en Matrices de datos



En este post leeremos y cargaremos 2 imagenes ubicadas en la carpeta donde se encuentran los archivos .m y .fig del programa.
Ambas imagenes seran leidas por la funcion imread() para luego ser mostradas en los axes.
Las imagenes son leidas como una matriz de datos binarios (En este caso ya que solo se trabaja con valores de 0=negro, 1=blanco).
Las imagenes son de tamano 8x8, por lo tanto cada matriz sera de dimensiones 8x8, donde cada posicion de la matriz contendra valores entre 0 y 1.

Las siguientes lineas de codigo representan el evento que se realizara al presionar sobre el boton "Cargar Images".

Seleccionamos el axes1.
axes(handles.axes1);
Guardamos el parth de la primera imagen
path = '\MATLAB\a2.bmp';
Leemos la imagen convirtiendola en una matriz
imag = imread(path);
Mostramos la imagen en el axes
imshow(imag);
Desabilitamos los ejes vertical y horizontal
axis off;
Mostramos la matriz que representa la primera
imagen y mostramos en un static text.
set(handles.text1,'String',num2str(imag));

Repetimos el procedimiento para la segunda
imagen que sera mostrada sobre el axes2.
axes(handles.axes2);
path = '\MATLAB\e0.bmp';
imag = imread(path);
imshow(imag);
axis off;
set(handles.text2,'String',num2str(imag));

Otra cosa importante que se debe de tomar en cuenta es que los "Static Text" deber ser modificados desde la GUI haciendo click derecho sobre cada static text y variando el valor de "max" hasta 10.




A continuacion en los enlaces siguientes se puede descargar los archivos e imagenes utilizados en el programa.





Como Utilizar y Elegir los Axes en GUI en Matlab


En este nuevo sencillo ejemplo mostraremos como utilizar los axes en la gui de matlab, graficando algunas funciones sobre los mismos.
Utilizaremos un boton para mandar a graficar las diferentes funciones sobre los 3 axes.
Ademas resolveremos el problema de no saber seleccionar el axes sobre el cual se requiere trabajar, para solucionar este problema utilizaremos la sentencia siguiente:



axes(handles.axes1);

Esta sentencia permite seleccionar el axes sobre el que se va a trabajar en ese instante.
En las siguientes lineas de codigo observamos que en la linea 4 se graficara sobre el axes1 que se selecciono con anterioridad en la linea 1.
Asimismo en la linea 9 se graficara sobre el axes 2 ya que se selecciono con anterioridad en la linea 6.

Las lineas 2 y 7 crean una variable que va desde 1 hasta 10/15 variando cada 0.001 para ser utilizada para graficar.

Las funciones plot() sirven para graficar sobre los axes seleccionados, permite colocar parametros como el LineWidth, el cual establece el ancho de la linea que se grafica.

axes(handles.axes1);
x1 = [1:0.001:10];
x2 = 2-x1*3;
plot(x1,x2,'red','LineWidth', 2.5);

axes(handles.axes2);
x1 = [1:0.001:15];
x2 = x1*3/9;
plot(x1,x2,'LineWidth', 2.5);



Para descargar los archivos del programa seguir los enlaces siguientes:

Como utilizar Global, Rand, Reshape en Matlab


Este post pretende explicar algunas sentencias muy basicas pero que a la vez son muy utiles a lo hora que se necesita trabajar con Matlab, nos concentramos en los siguientes conceptos:

Trabajar con variables tipo "global" en Matlab.
Genear numeros, matrices aleatorias con la funcion "rand".
Redimensionar el tamano de una matriz con la funcion "reshape".

Variables Globales:
Son variables que se puede utilizar en cualquier momento y desde cualquier funcion definida en el archivo .m.
El unico requisito es declarar las variables en cada una de las funciones donde se la vaya a utilizar.

A continuacion planteamos un ejemplo:
Tenemos 2 funciones en un archivo .m en matlab, lo cual quedaria asi:

function func1(hObject, eventdata, handles)
     global var2
     var1 = [1:1:10];
     var2 = sum(var1/(7-var1));

function func2(hObject, eventdata, handles)
     global var2
     disp(var2);

En el ejemplo anterior se puede observar que gracias a la definicion de la variable global var2 se puede utilizar esta variable en ambas funciones.
En la primera funcion definimos "var1" como una variable que varia de uno en uno desde 1 hasta 10 y la variable "var2" realiza la suma para todos los valores de "var1".

Funcion Rand:
Esta funcion nos permite generar numeros aleatorios en intervalos determinados, ademas nos permite crear vectores y matrices de numeros aleatorios, para lo cual se puede utilizar las siguientes sentencias:

rand(1) --> genera un numero aleatorio entre 0 y 1.
rand(5,1) --> genera un vector de numeros aleatorios de 5x1.
rand(1,3) --> genera un vector de numeros aleatorios de 1x3.
rand(2,3) --> genera una matriz de numeros aleatorios de 2x3.
rand(2,3,2) --> genera 2 matrices de numeros aleatorios de 2x3.


Existen otras funciones para generar valores aleatorios como las siguientes: randi(), randn().

La función randi() devuelve valores enteros dobles extraídas de una distribución uniforme discreta.
randi(2,10,1);

La función randn() devuelve matrices de números en coma flotante reales que se dibujan de una distribución normal estándar.
randn(10,1);

Funcion Reshape:
Esta funcion nos permite redimensionar matrices, por ejemplo se puede cambiar una matriz que representa valores para x,y,z en una matriz que represente valores solamente en x,y. Se aprecia mejor en el siguiente ejemplo:

Tenemos una matriz compuesta de los siguientes datos:

Podemos redimensionar con:

>> B = reshape(A(:, :, :), 24, 1)

Con este comando logramos crear un solo vector de datos de 24x1, en el cual contenga en sus filas cada uno de los valores de las matrices anteriores a la redimension.

Como Utilizar el Slider, Button, Edit Text en GUI en Matlab


En este ejemplo mostraremos como utilizar el componente Slider de la GUI de Matlab, su utilizacion es muy sencilla. En primer lugar creamos un nuevo archivo tipo fig y colocaremos lo siguiente:


a continuacion hacemos click en View Callbacks-->Callbacks sobre el Slider y colocamos el siguiente codigo:

handles.slider1 = get(hObject,'Value');
indSlide = round(handles.slider1);
set(handles.salidaSlider,'String',indSlide);

En indSlide capturamos la posicion del slider y la mostramos en uns static text en la siguiente linea.

Por defecto el intervalo de variacion del Slider es de 0 a 1, para cambiar estos parametro tendremos que ingresar a la GUI en Property Inspector sobre el Slider y encontrar los valores de maximo y minimo para su modificacion; en nuestro caso hemos colocado min = 0 y max = 10.

La siguiente parte del programa es establecer un valor al Slider al colocar un valor determinado sobre un Edit Text, es decir setear un determinado valor sobre un slider, lo cual se vera de la siguiente manera:



El codigo utilizado al presionar el boton "Aceptar" es el siguiente:

dato = str2num(get(handles.txtIn, 'String'));
set(handles.slider1, 'Value', fix(dato));

En la primera linea obtenemos el valor de entrada y los transformamos a formato de numeros.
En la segunda linea colocamos el valor obtenido del edit text sobre el slider.

Para descargar los archivos del programa seguir los enlaces siguientes:

Archivo.m
Archivo.fig


Como utilizar CheckBox y Button en GUI en Matlab


Este es un sencillo ejemplo que abarca la utilizacion de los checkbox en matlab, los checkbox permiten la seleccion de multiples opciones simultaneamente, lo cual los hace muy utiles para muchisimas aplicaciones que se crean dia a dia.

El primer paso es dirigirse a la gui y crear un nuevo documento sobre el cual pondremos los elementos que se muestran en la siguiente figura:


estado = get(handles.checkbox1,'Value');
if estado==1
    set(handles.txtSalida1,'String','Opcion1');
end

En la variable estado almacenaremos el valor de cada checkbox, siendo (1--> Seleccionado y 0--> No Seleccionado).

Se puede descargar los archivos del programa de los siguientes enlaces: