Entrada destacada

Solucion error AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts

Ajax Control Toolkit en ASP.NET Ajax Library Detalles de la Versión :(AspNetAjaxLibraryBeta0911.zip application, 6490K, uploaded Nov 18 ...

Mostrando entradas con la etiqueta Ejemplo. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ejemplo. Mostrar todas las entradas

viernes, 5 de febrero de 2016

Android Dialogs - Como crear un ProgressDialog

Empezaremos nuestro primer ejemplo en desarrollo Android con el ProgressDialog, que es una barra de progreso que se irá incrementando de acuerdo a nuestra necesidad.

Como ya tenemos todo preparado desde el artículo anterior “Crear un nuevo Proyecto en Android Studio”, vamos a nuestro archivo MainActivity.java e importamos estas dos librerías con el siguiente código que colocaremos debajo de

package com.dialogos.ejemplo.ejemplodialogos;
import android.app.ProgressDialog;
import android.os.Handler;

Ahora vamos al final del código y antes del último cierre de llaves ”}” creamos el método privado mostrarBarraProgreso

private void mostrarBarraProgreso(){
    
}

Fuera de nuestro método definiremos dos variables:

private ProgressDialog barraProgreso;
private Handler handler;

Dentro del método crearemos nuestra barra de progreso que recibirá la instancia de la actividad, le asignaremos un titulo, un mensaje, le daremos un estilo, su valor actual de progreso, un valor máximo al que llegará y lo mostraremos por pantalla:

private void mostrarBarraProgreso(){
    barraProgreso = new ProgressDialog(MainActivity.this);
    barraProgreso.setTitle("Buscando...");
    barraProgreso.setMessage("Progreso...");
    barraProgreso.setProgressStyle(barraProgreso.STYLE_HORIZONTAL);
    barraProgreso.setProgress(0);
    barraProgreso.setMax(10);
    barraProgreso.show();
}

Ahora crearemos un Thread o Hilo que nos ayudará a gestionar la evolución de la barra de progreso. El Thread recibe como parámetro un Runnable que tiene un método run(). Al escribir new Runnable y dar "Enter", Android Studio agrega el resto.

new Thread(new Runnable() {
    @Override
    public void run() {

    }
}).start();

También vamos a crear un objeto de tipo Handler para poder manejar la post ejecución del Thread.

handler = new Handler();

Con todo nuestro código ya debe verse así:

private void mostrarBarraProgreso(){
    barraProgreso = new ProgressDialog(MainActivity.this);
    barraProgreso.setTitle("Buscando...");
    barraProgreso.setMessage("Progreso...");
    barraProgreso.setProgressStyle(barraProgreso.STYLE_HORIZONTAL);
    barraProgreso.setProgress(0);
    barraProgreso.setMax(10);
    barraProgreso.show();

    handler = new Handler();


    new Thread(new Runnable() {
        @Override
        public void run() {

        }
    }).start();
}

Dentro del metodo run() agregamos la lógica para incrementar nuestra barra de progreso con un While que se mantendrá mientras el progreso de la barra sea menor al máximo que definimos que es 10. Haremos que el Thread duerma cada 1 segundo con Thread.sleep(1000) para evitar que la barra avance demasiado rápido y cuando llegue al máximo la ocultaremos de pantalla. Todo lo anterior lo envolvemos en un control de errores try catch.

El código para todo esto es:

try {
    while (barraProgreso.getProgress() <= barraProgreso.getMax()) {
        Thread.sleep(1000);

        handler.post(new Runnable() {
            @Override
            public void run() {
                barraProgreso.incrementProgressBy(1);
            }
        });

        if(barraProgreso.getProgress() == barraProgreso.getMax()){
            barraProgreso.dismiss();
        }
    }
}catch (InterruptedException er){
    er.printStackTrace();
}

El barraProgreso.incrementProgressBy(1) permite incrementar la barra en 1 y el barraProgreso.dismiss() la oculta.

y por ultimo solo queda llamar a nuestro método mostrarBarraProgreso lo cual haremos desde el onCreate de nuestro MainActivity quedando todo nuestro archivo MainActivity.java así:

package com.dialogos.ejemplo.ejemplodialogos;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        mostrarBarraProgreso();
    }

    @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_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private ProgressDialog barraProgreso;
    private Handler handler;

    private void mostrarBarraProgreso(){
        barraProgreso = new ProgressDialog(MainActivity.this);
        barraProgreso.setTitle("Buscando...");
        barraProgreso.setMessage("Progreso...");
        barraProgreso.setProgressStyle(barraProgreso.STYLE_HORIZONTAL);
        barraProgreso.setProgress(0);
        barraProgreso.setMax(10);
        barraProgreso.show();

        handler = new Handler();

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    while (barraProgreso.getProgress() <= barraProgreso.getMax()) {
                        Thread.sleep(1000);

                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                barraProgreso.incrementProgressBy(1);
                            }
                        });

                        if(barraProgreso.getProgress() == barraProgreso.getMax()){
                            barraProgreso.dismiss();
                        }
                    }
                }catch (InterruptedException er){
                    er.printStackTrace();
                }
            }
        }).start();
    }
}

Ahora solo queda probar, para lo cual vamos a la barra de menú en Run->Run ‘app’ o en el triangulo verde del tool bar.

Seleccionamos nuestro dispositivo creado en el artículo anterior “Crear un nuevo Proyecto en Android Studio”, en mi caso el Nexus 5 API 17 y clic en OK

Ahora un poco de paciencia ya que se demora en levantar el emulador e instalar nuestra aplicación y toma varios minutos. Cuando se encuentre listo veremos algo como esto:

Desbloqueamos la pantalla con el mouse arrastrando el candado hacia afuera (obvio que ya lo sabían pero nunca está de más decirlo). Si solo ven una pantalla en blanco, vuelvan a ejecutar la aplicación en Run->Run ‘app’ pero no cierren la ventana del emulador así ahora todo irá mas y veremos nuestro dialogo con la barra de progreso:

Bueno, esto es todo por hoy, en la próxima veremos más ejemplos con otros Dialogs.

Toby

jueves, 4 de febrero de 2016

Crear un nuevo Proyecto en Android Studio

A continuación quiero mostrarles un poco de programación en Android con el Android Studio el cual ya debemos tener instalado y configurado, además quiero salirme del típico ejemplo de “¡Hola Mundo!” o “Hello World!”, así que voy a realizar un ejemplo con diálogos. Los Android Dialogs son pequeñas ventanas que pueden interactuar con el usuario para mostrar o solicitar algún tipo de información.

Quiero aclarar que me centraré solo en el ejemplo y evitaré entrar en la teoría, ya que existe mucha documentación en la Red y no quiero alargarme ni aburrirlos antes de tiempo, así que hoy solo vamos a crear el proyecto y dejar todo listo para los siguientes días.

Empecemos. Luego de iniciar Android Studio damos clic en “Start a new Android Studio project”. Si ya lo teníamos abierto, desde el menú vamos a File->New->New Project.

Ingresamos el Application name y Company Domain, el Project location lo dejamos tal cual y damos clic en Next y en la siguiente ventana dejamos tal cual y Next.

Acá seleccionamos Blank Activity y Next

En Activity dejamos los valores que nos da por defecto y damos clic en Finish.

Dependiendo de los recursos que tengamos en nuestra maquina de desarrollo va a ser el tiempo que demore el proceso en estar listo, así que paciencia.

Una vez listo tendremos lo siguiente:

Vamos a aprovechar de hacer clic sobre el “Hello World!” y lo suprimimos. Ahora para finalizar vamos a crear nuestro dispositivo virtual que es en donde vamos a probar nuestros desarrollos. Damos clic en el icono AVD Manager del Tool bar

Damos clic en Create Virtual Device

Seleccionamos Nexus 5 y damos clic en Next

Ahora debemos seleccionar la API 17. Si no la tienen pueden instalarla dando clic en “Show downloadable system images”. Después damos clic en Next

Acá dejamos todo igual, pero si necesitamos ajustar valores como por ejemplo la RAM que usaremos en el dispositivo, damos clic en “Show Advanced Settings”. Y damos clic en Finish

Con esto ya tendríamos todo listo para los ejemplos que realizaremos más adelante. Nos vemos.

Toby

jueves, 18 de diciembre de 2008

Consumir Web Services de Indicadores con ASP

En una publicación anterior, vimos como podíamos conectarnos a un Web Services utilizando el lenguaje de programación Visual Basic 6. Hoy veremos como conectarnos al mismo Web Services que nos entregaba los indicadores económicos de Chile. Empecemos.

Comencemos por crear el formulario que recibirá la fecha de consulta e invocará al Web Services que se llamará “RescateWS.asp”. El código es el siguiente:




<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>http://turboprogramacion.blogspot.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Estilo1 {
color: #FFFFFF;
font-weight: bold;
font-size: 18px
}
-->
</style>
</head>
<body>
<form action="Invocar.asp" method="post" name="form1">
<table width="300" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor="#004080">
<td colspan="3"><div align="center" class="Estilo1">Consutar Indicadores Econ&oacute;micos</div></td>
</tr>
<tr bgcolor="#CCCCCC">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="#CCCCCC">
<td width="61%" align="right">Ingrese Fecha (yyyymmdd)</td>
<td width="4%">:</td>
<td width="35%"><input name="fecha" type="text" id="fecha" size="10" maxlength="10"></td>
</tr>
<tr bgcolor="#CCCCCC">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr bgcolor="#808080">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input name="Consultar" type="submit" value="Consultar"></td>
</tr>
</table>
</form>
</body>
</html>



Ahora el archivo “Funcion.asp”, en donde vamos a crear la función “LeeXml()” que se encargará de leer el XML de respuesta con los indicadores que nos enviará el Web Services y la función “InvocarWebService()” que enviará el XML de consulta con el parámetro fecha. Nuestras funciones quedarán así:




<%
Function LeeXml(responseText)
Dim xmlResponse
Dim xnodelist
Dim indicadores
Dim id, uf, usd, euro, utm, tcm, fecha

indicadores = ""
If Len(responseText) <> 0 Then
Set xmlResponse = CreateObject("MSXML2.DOMDocument")
xmlResponse.async = false
xmlResponse.loadXml responseText
Set xnodelist = xmlResponse.documentElement.selectNodes("/soap:Envelope/soap:Body/IndicadoresResponse/IndicadoresResult/diffgr:diffgram/NewDataSet/indicadores")
Dim objItem

For Each objItem In xnodelist
id = objItem.selectSingleNode("id").Text
uf = objItem.selectSingleNode("uf").Text
usd = objItem.selectSingleNode("usd").Text
euro = objItem.selectSingleNode("euro").Text
utm = objItem.selectSingleNode("utm").Text
tcm = objItem.selectSingleNode("tcm").Text
fecha = objItem.selectSingleNode("fecha").Text
Next

indicadores = "<TABLE CELLSPACING='1' bgcolor='#dedede' ALIGN=CENTER WIDTH='250'>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>UF</TD>" & _
"<TD align='right'>"&uf&"</TD>" & _
"</TR>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>UTM</TD>" & _
"<TD align='right'>"&utm&"</TD>" & _
"</TR>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>D&oacute;lar Observado</TD>" & _
"<TD align='right'>"&usd&"</TD>" & _
"</TR>" & _
"<TR bgcolor='#f0f0f0'>" & _
"<TD>Euro</a></TD>" & _
"<TD align='right'>"&euro&"</TD>" & _
"</TR>" & _
"</TABLE>"
End If

LeeXml = indicadores
End Function

Function InvocarWebService (strSoap, strSOAPAction, strURL, ByRef xmlResponse)
Dim xmlhttp
Dim blnSuccess

Set xmlhttp = server.CreateObject("WinHttp.WinHttpRequest.5.1")
xmlhttp.Open "POST", strURL
xmlhttp.setRequestHeader "Man", "POST " & strURL & " HTTP/1.1"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction
call xmlhttp.send(strSoap)

If xmlhttp.Status = 200 Then
blnSuccess = True
Else
blnSuccess = False
End If

xmlResponse = xmlhttp.ResponseText
InvocarWebService = blnSuccess
Set xmlhttp = Nothing
End Function
%>



Ya solo nos queda crear la página “Invocar.asp” que contiene el XML de consulta y llama a las funciones “InvocarWebService()” y “LeeXml()” para posteriormente presentarnos los indicadores resultantes por pantalla. Entonces el código es:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "funcion.asp" -->
<%
strFecha = Request.Form("fecha")
strSoap = "<?xml version='1.0' encoding='utf-8'?>"& _
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"& _
"<soap:Body>"& _
"<Indicadores xmlns='Indicadores'>"& _
"<Fecha>"&strFecha&"</Fecha>"& _
"</Indicadores>"& _
"</soap:Body>"& _
"</soap:Envelope>"
strSOAPAction = "Indicadores/Indicadores"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>http://turboprogramacion.blogspot.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
Dim xmlResponse
If InvocarWebService (strSoap, strSOAPAction, "http://www.desachile.com/webservice.asmx?WSDL", xmlResponse) Then
Response.Write(LeeXml(xmlResponse))
Else
Response.Write "*** Ha ocurrido un Error ***"
End If
Set xmlResponse = Nothing
%>
</body>
</html>



Listo, ya solo nos queda probar. Si estás detrás de un Proxy, puede que tengas que hacer una pequeña variación en el código. Eso se los dejo como tarea.


Saludos y espero les ayude a quienes están comenzando con este tema.


Toby


Los archivos del ejemplo, los puedes descargar en DesaChile.com

Entradas populares