Autor: elGuille

  • Ejemplo sencillo de notificaciones (toast) para Windows Store

     

    Pues eso… que aunque aún no son horas de toastar nada, pero te voy a poner un par de ejemplos (o uno solo) de cómo mostrar las notificaciones del sistema (toast notifications), que no son otra cosa que los mensajes (o notificaciones) que aparecen en los laterales de la parte superior de la pantalla de Windows (ver la figura 1).

     

    toast01
    Figura 1.

     

    En principio este tipo de notificaciones están pensadas para eso, notificar al usuario de algo en un momento concreto (ahora te explico esto), pero sobre todo, que el usuario se entere de que eso está ocurriendo (lo están avisando), así que… este tipo de notificaciones se mostrarán siempre encima de lo que haya en ese momento en la pantalla… y cuando digo pantalla me refiero a la pantalla tanto de inicio de Windows 8 como a la "pantalla del escritorio".

     

    Lo del par de ejemplos que te comentaba antes es porque hay dos formas de notificar (o mostrar las notificaciones). Una es de forma inmediata, es decir: ¡ya!. La otra es para que se muestre en el momento que indiquemos, ya sean unos segundos después o más tiempo… no sé exactamente cuanto tiempo, pero incluso días y meses después. La tercera (sí, ya se que te dije que había dos, pero…) es una especie de variación de la segunda, ya que también se puede indicar la periodicidad de dicha notificación (si se repite, etc.)

    Es decir, que hay muchas posibilidades de usar las notificaciones del sistema (o toast notifications), así que, si además de lo que te explique aquí quieres saber más: Introducción a las notificaciones del sistema (Toast notification overview)

     

    Lo primero que debes saber es que esto es para usarlo en las aplicaciones de Windows Store y que en el manifiesto de la aplicación tienes que indicar que quieres usar este tipo de notificaciones.

    Abre el fichero Package.appxmanifest y en la primera ficha (Application UI) en la lista de las imágenes busca Badge Logo y selecciónala, en la parte de la derecha tendrás las opciones de notificaciones (notifications) en la lista Toast capable selecciona Yes tal como puedes ver en la figura 2.
    De no hacerlo, las notificaciones simplemente ¡¡¡ NO APARECERÁN !!!

     

    toast03
    Figura 2

     

    Una vez que tenemos esto, vamos a ver el código (en principio de Visual Basic, ya también el de C# o lo pongo más tarde o te pongo un enlace a Pastebin para cuando esté listo), de todas formas, los que usáis C# no os podéis quejar mucho, ya que la mayoría de los ejemplos de la documentación y otros sitios web están en C#, algo que no es tan habitual para los que prefieren usar Visual Basic, en fin…

     

    Los pasos a seguir:

    Crea un proyecto para la tienda de Windows (yo he creado el m´s básico).

    Abre el fichero del manifiesto de la aplicación (Package.appxmanifest) y selecciona Yes en Toast capable (ver figura 2).

    En MainPage.xaml vamos a crear una barra de aplicación (AppBar) con tres botones.
    El diseño de esos botones los tomaremos del fichero StandardStyles.xaml (en la carpeta Common), pero como quiero cambiarles el texto para que me lo muestre en castellano, los he copiado y pegado en los recursos de la página (cambiándoles el nombre para que no haya conflictos, aunque en esta caso no los habría ya que los botones del fichero StandarStyles suelen estar comentados, al menos en la plantilla de las aplicaciones básicas.

    Esos tres botones usarán distintos tipos de notificaciones, con idea de que sepas manejarte con varias de las posibilidades que tiene esto de los "toast notifications".

    El primer botón envía una notificación inmediata usando un periodo largo, es decir, la notificación tardará más de lo habitual en quitarse, también está desactivado el audio (es una notificación silenciosa y de larga duración, jeje).

    Al pulsar en el segundo botón mostrará una notificación a los 3 segundos y esta si que será con sonido y de duración normal.

    El tercer botón se notificará de forma inmediata y otra más a los 10 segundos, ambas serán de larga duración y con sonido.

     

    Aquí tienes una captura en pleno funcionamiento:

     

    toast05
    Figura 3. La aplicación en funcionamiento

     

    Este es el código XAML completo, con la definición de los estilos de los tres botones.

     

    <Page
        x:Class="Toast_notifications.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Toast_notifications"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Page.Resources>
            <Style x:Key="PlayEsAppBarButtonStyle" TargetType="ButtonBase" 
                   BasedOn="{StaticResource AppBarButtonStyle}">
                <Setter Property="AutomationProperties.AutomationId" Value="PlayAppBarButton"/>
                <Setter Property="AutomationProperties.Name" Value="Inmediato"/>
                <Setter Property="Content" Value="&#xE102;"/>
            </Style>
    
            <Style x:Key="HelpEsAppBarButtonStyle" TargetType="ButtonBase" 
                   BasedOn="{StaticResource AppBarButtonStyle}">
                <Setter Property="AutomationProperties.AutomationId" Value="HelpAppBarButton"/>
                <Setter Property="AutomationProperties.Name" Value="Ayuda"/>
                <Setter Property="Content" Value="&#xE11B;"/>
            </Style>
            <Style x:Key="ClockEsAppBarButtonStyle" TargetType="ButtonBase" 
                   BasedOn="{StaticResource AppBarButtonStyle}">
                <Setter Property="AutomationProperties.AutomationId" Value="ClockAppBarButton"/>
                <Setter Property="AutomationProperties.Name" Value="Programado"/>
                <Setter Property="Content" Value="&#xE121;"/>
            </Style>
        </Page.Resources>
        
        <Page.BottomAppBar>
            <AppBar x:Name="bottomAppBar1" Padding="10,0,10,0">
                <Grid>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                        <Button Style="{StaticResource PlayEsAppBarButtonStyle}" 
                                Click="ButtonPlay_Click" />
                        <Button Style="{StaticResource ClockEsAppBarButtonStyle}" 
                                Click="ButtonClock_Click" />
                    </StackPanel>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                        <Button Style="{StaticResource HelpEsAppBarButtonStyle}" 
                                Click="ButtonHelp_Click" />
                    </StackPanel>
                    
                </Grid>
            </AppBar>
        </Page.BottomAppBar>
        <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
            <Grid.RowDefinitions>
                <RowDefinition Height="80" />
                <RowDefinition />
            </Grid.RowDefinitions>
    
            <!-- El título de la página -->
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="120"/>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock x:Name="pageTitle" Grid.Column="1" Text="Prueba de toast notifications" 
                           IsHitTestVisible="false" 
                           Style="{StaticResource PageHeaderTextStyle}" />
                <Image x:Name="imgLogo" Grid.Column="2" Margin="10" 
                       Source="///Assets/SmallLogo.png" Stretch="Uniform" />
            </Grid>
    
        </Grid>
    </Page>
    
    

     

    Y este es el código de los tres botones Visual Basic:

    Primero te pongo las dos importaciones que hay que añadir:

     

    Imports Windows.UI.Notifications
    Imports Windows.Data.Xml.Dom
    

     

    Y este es el código de los tres botones, las explicaciones están en los comentarios.

     

    Private Sub ButtonPlay_Click(sender As Object, e As RoutedEventArgs)
    
        ' La plantilla a usar, esta Text03 es:
        ' un texto de cabecera que puede ocupar dos líneas y una línea de texto normal
        Dim toastTemplate As ToastTemplateType = ToastTemplateType.ToastText03
        ' Asignamos el template a un documento Xml
        Dim toastXml As XmlDocument = ToastNotificationManager.GetTemplateContent(toastTemplate)
    
        ' El texto para el primero elemento de la pantilla
        Dim toastTextElements As XmlNodeList = toastXml.GetElementsByTagName("text")
        toastTextElements(0).AppendChild(toastXml.CreateTextNode("Cargando ..."))
    
        ' Si queremos que la duración sea larga
        ' Puede ser corta o larga, corta es la predeterminada
        Dim toastNode As IXmlNode = toastXml.SelectSingleNode("/toast")
        TryCast(toastNode, XmlElement).SetAttribute("duration", "long")
    
        ' Si queremos quitar el sonido
        ' (o indicar alguno en particular)
        ' tenemos que usar el elemento "audio"
        'Dim toastNode As IXmlNode = toastXml.SelectSingleNode("/toast")
        Dim audio As XmlElement = toastXml.CreateElement("audio")
        audio.SetAttribute("silent", "true")
        toastNode.AppendChild(audio)
    
    
        Dim toast As New ToastNotification(toastXml)
        ToastNotificationManager.CreateToastNotifier().Show(toast)
    End Sub
    
    Private Sub ButtonClock_Click(sender As Object, e As RoutedEventArgs)
    
        ' La plantilla a usar, esta Text03 es:
        ' un texto de cabecera que puede ocupar dos líneas y una línea de texto normal
        Dim toastTemplate As ToastTemplateType = ToastTemplateType.ToastText03
        ' Asignamos el template a un documento Xml
        Dim toastXml As XmlDocument = ToastNotificationManager.GetTemplateContent(toastTemplate)
    
        ' El texto para el primero elemento de la pantilla
        Dim toastTextElements As XmlNodeList = toastXml.GetElementsByTagName("text")
        toastTextElements(0).AppendChild(
            toastXml.CreateTextNode("A los 3 segundos después de haber pulsado en el botón."))
        toastTextElements(1).AppendChild(
            toastXml.CreateTextNode("Segundo texto."))
    
        ' Esto es para indicar que esta notificación se hará en el momento indicado
        Dim dueTime As DateTime = DateTime.Now.AddSeconds(3)
        Dim scheduledToast As New ScheduledToastNotification(toastXml, dueTime)
    
        ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledToast)
    
    End Sub
    
    Private Sub ButtonHelp_Click(sender As Object, e As RoutedEventArgs)
        ' La plantilla a usar, esta Text02 es:
        ' un texto de cabecera y un texto normal que puede ocupar dos líneas
        Dim toastTemplate As ToastTemplateType = ToastTemplateType.ToastText02
        ' Asignamos el template a un documento Xml
        Dim toastXml As XmlDocument = ToastNotificationManager.GetTemplateContent(toastTemplate)
    
        ' El texto para el primero elemento de la pantilla
        Dim toastTextElements As XmlNodeList = toastXml.GetElementsByTagName("text")
        toastTextElements(0).AppendChild(
            toastXml.CreateTextNode("Esto se mostrará durante más tiempo ..."))
        toastTextElements(1).AppendChild(
            toastXml.CreateTextNode("Siempre puedes cerrar las notificaciones en la X superior."))
    
        ' Si queremos que la duración sea larga
        ' Puede ser corta o larga, corta es la predeterminada
        Dim toastNode As IXmlNode = toastXml.SelectSingleNode("/toast")
        TryCast(toastNode, XmlElement).SetAttribute("duration", "long")
    
        ' Esto es para indicar que esta notificación se hará en el momento indicado
        Dim dueTime As DateTime = DateTime.Now.AddSeconds(10)
        Dim scheduledToast As New ScheduledToastNotification(toastXml, dueTime)
    
        ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledToast)
    
        Dim toast As New ToastNotification(toastXml)
        ToastNotificationManager.CreateToastNotifier().Show(toast)
    
    

     

    Ese es el código para C# (no he tardado tanto, ¿verdad? son las 06.35 y lo publiqué a eso de las 6.05)

     

    Añade estas dos importaciones:

     

    using Windows.UI.Notifications;
    using Windows.Data.Xml.Dom;
    

     

    private void ButtonPlay_Click(object sender, RoutedEventArgs e)
    {
        // La plantilla a usar, esta Text03 es:
        // un texto de cabecera que puede ocupar dos líneas y una línea de texto normal
        ToastTemplateType toastTemplate = ToastTemplateType.ToastText03;
    
        // Asignamos el template a un documento Xml
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
    
        // El texto para el primer elemento de la pantilla
        XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
        toastTextElements[0].AppendChild(toastXml.CreateTextNode("Cargando ..."));
    
        // Si queremos que la duración sea larga
        // Puede ser corta o larga, corta es la predeterminada
        IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        ((XmlElement)toastNode).SetAttribute("duration", "long");
    
        // Si queremos quitar el sonido
        // (o indicar alguno en particular)
        // tenemos que usar el elemento "audio"
        // IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        XmlElement audio = toastXml.CreateElement("audio");
        audio.SetAttribute("silent", "true");
        toastNode.AppendChild(audio);
    
        ToastNotification toast = new ToastNotification(toastXml);
        ToastNotificationManager.CreateToastNotifier().Show(toast);
    }
    
    private void ButtonClock_Click(object sender, RoutedEventArgs e)
    {
        // La plantilla a usar, esta Text03 es:
        // un texto de cabecera que puede ocupar dos líneas y una línea de texto normal
        ToastTemplateType toastTemplate = ToastTemplateType.ToastText03;
    
        // Asignamos el template a un documento Xml
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
    
        // El texto para el primer elemento de la pantilla
        XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
        toastTextElements[0].AppendChild(
            toastXml.CreateTextNode("A los 3 segundos después de haber pulsado en el botón."));
        toastTextElements[1].AppendChild(
            toastXml.CreateTextNode("Segundo texto."));
    
        // Esto es para indicar que esta notificación se hará en el momento indicado
        DateTime dueTime = DateTime.Now.AddSeconds(3);
        ScheduledToastNotification scheduledToast = new ScheduledToastNotification(toastXml, dueTime);
    
        ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledToast);
    }
    
    private void ButtonHelp_Click(object sender, RoutedEventArgs e)
    {
        // La plantilla a usar, esta Text02 es:
        // un texto de cabecera y un texto normal que puede ocupar dos líneas
        ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
        // Asignamos el template a un documento Xml
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
    
        // El texto para el primero elemento de la pantilla
        XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
        toastTextElements[0].AppendChild(
            toastXml.CreateTextNode("Esto se mostrará durante más tiempo ..."));
        toastTextElements[1].AppendChild(
            toastXml.CreateTextNode("Siempre puedes cerrar las notificaciones en la X superior."));
    
        // Si queremos que la duración sea larga
        // Puede ser corta o larga, corta es la predeterminada
        IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        (toastNode as XmlElement).SetAttribute("duration", "long");
    
        // Esto es para indicar que esta notificación se hará en el momento indicado
        DateTime dueTime = DateTime.Now.AddSeconds(10);
        ScheduledToastNotification scheduledToast = new ScheduledToastNotification(toastXml, dueTime);
    
        ToastNotificationManager.CreateToastNotifier().AddToSchedule(scheduledToast);
    
        ToastNotification toast = new ToastNotification(toastXml);
        ToastNotificationManager.CreateToastNotifier().Show(toast);
    }
    
    

     

     

    Como comentario adicional, decirte que podemos "detener" una notificación si tenemos a nuestra disposición el objeto con la que se creó, ya que para detenerla tenemos que usar el método Hide de la función compartida CreateToastNotifier. A ese método Hide le tenemos que pasar una referencia al objeto que queremos detener. Yo esto lo he usado en la aplicación que he mandado a la tienda de Windows, en la que muestro la notificación mientras se carga una página web en el control WebView y la oculto cuando dicha página se ha terminado de cargar o lo que es lo mismo, intercepto el evento LoadComplete del control WebView, y ahí es donde quito la notificación.

    Como es natural, el objeto "toast" usado para esa notificación no puede estar definido dentro de un sub, ya que así no sería accesible desde otra parte del código. Por tanto, en ese caso, el objeto toast usado para poder ocultarlo cuando queramos, lo tendríamos que definir fuera de cualquier método.

     

    Espero que todo esto te sea de utilidad y para los que prefieren el C#, dadme unos minutos a que cree el proyecto en ese lenguaje y convierta el código, lo tacho porque ya está publicado.

     

    Nos vemos.

    Guillermo

    …

  • Consejos para publicar aplicaciones en la tienda de Windows

     

    Pues eso… que ahora que lo tengo fresco te voy a explicar las cosas que debes tener preparadas para cuando quieras publicar una aplicación en la tienda de Windows (Windows Store).
    Lo de que lo tengo fresco es porque acabo de enviar a "certificar" las dos versiones de mi segunda aplicación para la tienda de Windows: Lector Rss para Windows 8.

     

    Primero de todo debes crear la aplicación que quieres publicar en la tienda de Windows, este requisito es… vamos que si no tienes algo que publicar, pues…

    En el manifiesto de la aplicación (accesible desde Visual Studio) debes indicar ciertas características de la aplicación, como qué iconos (imágenes) utiliza y qué requisitos requiere, por ejemplo, acceso a internet, a la cámara, etc.

    Los iconos o imágenes de la aplicación que deben incluirse son los que se añaden si creamos la aplicación usando una de las plantillas de Visual Studio, a saber:

    • Logo (150×150)
    • Small Logo (30×30)
    • Splash Screen (620×300)
    • Store Logo (50×50)

    Opcionalmente puedes indicar otros tamaños (en el manifiesto te indica qué tamaños debes utilizar) así como otros dos más: Badge Logo (24×24) y Wide Logo (310×150).
    Todos ellos en formato PNG (Portable Network Graphics).

    Logo y Wide Logo son las imágenes utilizadas en el inicio de Windows, si agregas WideLogo los usuarios podrán mostrar el icono de tu aplicación en modo grande, si no, sólo en el tamaño cuadrado de Logo.

    Para saber más de estos logos: Elegir las imágenes de tu aplicación.

     

    consejos 01

     

    En la pestaña "Capabilities" (capacidades) del manifiesto de la aplicación debes indicar qué va a hacer tu aplicación en esos temas, si algunos de ellos es aplicable a las características de tu aplicación, entonces debes seleccionarlas.
    Un error común (según dicen esta gente de la tienda de Windows) es acceder a Internet sin marcar la opción Internet (Client), que por cierto es la opción que viene seleccionada de forma predeterminada. En esos casos, es fácil que te rechacen la aplicación.

     

    consejos 02
    Figura 2.

     

    Una vez que tienes tu aplicación creada y tu cuenta de la tienda de Windows abierta, desde el propio Visual Studio puedes acceder a ciertas tareas que habitualmente harías desde el panel de tu cuenta de Windows Store o desde el escritorio de tu Windows (por ejemplo para comprobar si la app pasa el proceso de certificación).

    Todas esas opciones están en el menú Project > Store (ver la imagen 3).

     

    consejos 03

     

    Las cosas que debes indicar en la tienda de Windows y que ya deberías tener preparadas son:

    La descripción de la aplicación, un par de "características", la dirección web en la que habrá información sobre la aplicación (esto es opcional), una dirección (web) para dar soporte a la aplicación, puede ser una página Web (o blog) o bien un correo electrónico, pero te recomiendo que no uses el correo electrónico, ya que ese correo aparece en los detalles de la tienda de Windows.

    Tienes que tener algunas capturas de la aplicación (al menos una) que serán las que se utilicen en la descripción de la tienda de Windows.
    El máximo son ocho. En la siguiente imagen puedes ver estas cosas que acabo de comentarte.

     

    consejos 04

     

    Otra imagen (o imágenes) que puedes preparar (no son obligatorias) pero si no las agregas no podrán "promocionarte" la aplicación. Esas imágenes son las que utilizan en la tienda de Windows para destacar algunas aplicaciones… yo las mando por lo que pueda ocurrir…
    Los tamaños son cuatro: 414×180 (el recomendable si sólo quieres mandar una), 414×468, 558×756 y 846×468.
    En relación a estas imágenes, recomiendan que no sean simples capturas, si no mas bien imágenes promocionales o con el logo de la aplicación, etc.

     

    Y con todo esto listo, tienes más o menos unas cuantas cosas adelantadas, que la primera vez que publiqué una aplicación (hace una semana más o menos) no sabía de estas imágenes y textos a rellenar y… pues eso… que tuve que ponerme a prepararlo todo.

     

    Por último comentarte que la aplicación debe estar compilada en modo Release, ya que si la quieres publicar en modo Debug seguro que te la echan para atrás.

     

    Nota:
    Pues resulta que me han echado para atrás la aplicación que he mandado y que accede a internet (es un lector RSS) y es porque no he puesto la declaración de privacidad, y eso que lo dicen bien claro en la descripción que te muestra cuando pulsas en el enlace que hay en esa pestaña de configuración (ver la figura 2).
    Bueno, pues aquí te lo digo y te lo "pego" para que lo sepas:

     

    Internet y redes públicas

    La funcionalidad internetClient proporciona acceso de salida a Internet y redes públicas a través del firewall. Casi todas las aplicaciones web utilizan esta funcionalidad. La funcionalidad internetClientServer proporciona acceso de entrada y salida a Internet y a redes públicas a través del firewall.

    La funcionalidad internetClientServer se utiliza normalmente en escenarios punto a punto (P2P) de aplicaciones que utilizan recurso compartido de archivos y VoIP. La funcionalidad internetClientServer incluye el acceso que proporciona la funcionalidad internetClient, de manera que no tienes que especificar internetClient cuando especificas internetClientServer.

    Un requisito de certificación importante es que, si declaras estas funcionalidades, debes incluir un vínculo a tu directiva de privacidad en el panel Configuración. No hacerlo es una de las formas más habituales de impedir que la certificación se produzca.

    La página web en la que están las explicaciones de cada una de esas "capabilities" es esta:
    Declaraciones de funcionalidades de aplicación (aplicaciones de la Tienda Windows)

     

     

     

    Nos vemos.
    Guillermo

    Enlaces de utilidad:

    …

  • To Windows or not to Windows

     

    Pues eso… un poco de nostalgia comparativa de las primeras versiones de Windows:
    Imágenes y textos tomados de: Creating the Windows 8 user experience que al final ha pasado a ser casi un "calco" del original, cuando mi intención era ponerte unas pocas imágenes, en fin…

     

    Windows 1

    Windows 1 was released in 1985, and it was designed for drastically different scenarios than what people use PCs for today.

    3 windows appear in a grid layout. Along bottom of screen are icons for a disk, a calculator, a paint program, and 2 more icons.

    The first version of Windows was a rough graphical shell around DOS, intended primarily to be used with the keyboard. A mouse was strictly optional and very few PCs had one.

     

     

    Windows 3 and 3.1

    The first commercially successful version of Windows was Windows 3, released in 1990. It featured a totally new interface, centered on a new shell called Program Manager for launching, arranging, and switching programs.

    Program Manager and File Manager windows float over a series of icons on the desktop

    File Manager was the most important new program in Windows 3, used for managing files and drives. This upgrade bet big for the first time on most users having a mouse, and knowing how to use it to click on the colorful, large (for the time) 32×32 icons. Many reviews were critical of the release because to use it effectively required one of those oft-criticized mice.

     

     

    Windows 95

    Windows 95, released a few years later in August of 1995, included a substantially reinvented user experience. Many of the constructs that are still present in Windows 7 were introduced in this version—the Start menu, taskbar, Explorer, and the desktop—but in very different forms.

    Windows Explorer open on the desktop, Start menu shows programs in a flyout menu.

    Although we think about these user interface elements as familiar today, at the time, they were radically different from how anyone had used a PC before. The Start button was so undiscoverable that, despite having the word Start right on it, bouncing “<– Click here to begin” text had to be added to the taskbar after early test releases so that people could figure out how to get started using the programs on their PC.

     

    Windows XP

    Windows XP was released to PC manufacturers on August 24, 2001. It represented another important evolution in the Windows user interface.

    My Documents window and Windows Media Player window float over a desktop background image of a green hillside and blue sky. Start button appears at lower left.

    By 2001, people were using their PCs more every day. Typing and managing files, which doesn’t require the web, remained a critical percentage of the time people spent using a PC. Yet collecting and consuming information and media—especially music, photos, and videos—was on the verge of becoming mainstream. (Even then, early digital camera sales were still just one quarter of film camera sales, and would not eclipse them for another three years.) People were spending more time on the PC web browsing and doing mail, in addition to the document-focused productivity scenarios around which Windows 95 was developed.

     

    Windows Vista

    In 2006, Windows Vista substantially changed the visual appearance of Windows, introducing the Aero visual style. Aero gave the appearance of highly-rendered glass, light sources, reflections, and other graphically complex textures in the title bars, taskbar, and other system surfaces. These stylistic elements represented the design sensibilities of the time, reflecting the capabilities of the brand-new digital tools used to create and render them. This style of simulating faux-realistic materials (such as glass or aluminum) on the screen looks dated and cheesy now, but at the time, it was very much en vogue.

    Image of Analog Clock gadget on desktop, with a window overlaying it with semi-transparent edges.

    Aero was designed to help people focus less on the window chrome itself, and more on the content within the window. It draws the eye away from the title bar and window frames, and towards what is valuable and what an app is about.

    And of course, the Start menu changed again, most notably by making it possible to press the Windows key (introduced in Windows 95) and then just start typing to search from anywhere in Windows. (This welcome innovation is one we’ve kept in Windows 8, expanding it to search even within apps.)

    Of course, as with every change along the way, some people expressed reservations about the changes.

     

    Windows 7

    Windows 7 was released in the fall of 2009, and a number of the key aspects of the UI were significantly transformed. While many of these changes centered on an overhaul of the taskbar, significant modifications were also made to the Start menu, windowing, and to the logical organization of files on the PC.

    Start button, with IE, Windows Explorer, and Windows Media Player on Taskbar. 3 instances of IE shown above taskbar (activated on hover)

    Notably, launching and switching between programs were brought together in the new taskbar. Icons in the taskbar were made bigger and more touchable. The Start menu was changed to focus on launching only the programs you use less frequently, as no program can be pinned to both the taskbar and the Start menu. This marked the start of a transition where we were looking to remove the archaic distinction between starting a program for the first time and returning to a program that was already running. It is interesting to consider how odd it is that we trained ourselves to look one place for a program the first time it is running, and a different place once it is already running.

    Windows 7 also was the first mainstream non-phone OS to introduce multitouch support into the base OS. Although tablets on other platforms have followed suit, Windows 7 was the first shipping OS to embrace multitouch in the platform. Along the way, we learned a great deal about the limitations of trying to use touch to navigate Windows when so much of the existing interface, and virtually all of the existing programs, were specifically designed to be used with mouse and keyboard.

    Although some people had critical reactions and demanded changes to the user interface, Windows 7 quickly became the most-used OS in the world.

     

    Windows 8 user experience

    But as we move closer to general availability of Windows 8 and beyond, to a time when all of your favorite apps are available and represented by tiles, suddenly your Start screen will become a personalized dashboard of everything you care about. Your whole computing experience has the potential to be encapsulated in one view. A view that you organize and control.

    Start screen with 16 live tiles

    Even content from within apps can be pinned to Start: people, mail folders, accounts, websites, books, albums, singers, movies, clients, sports teams, cities, etc. Everything you care about is efficiently available and up-to-date at all times. Tiles are the future and fit the way people look for fresh content in apps and websites.

     

    Pues ya está…

    Nos vemos.
    Guillermo

    …