Today's personal computers, mobile devices, tablets and other computing devices generally allow a user to have multiple applications running at the same time. Thus, operating systems for these devices generally provide a mechanism through which a user can switch between applications. In general this mechanism is provided by a graphical user interface through which various gestures result in a change in the application being used by the user.
Challenges in designing such graphical user interfaces include, but are not limited to, providing an intuitive way to view available applications, to select from among them, and to change a selection that has been made.
This Summary introduces selected concepts in simplified form that are further described below in the Detailed Description. This Summary is intended neither to identify key or essential features of the claimed subject matter, nor to limit the scope of the claimed subject matter.
A graphical user interface for viewing and selecting from a list of available applications through an operating system of a computer includes a switch list. The switch list is partially displayed, providing a peek into the contents of the list, during gestures that manipulate a view of an application on a display.
In various implementations, the displayed switch list can be either fully or partially displayed, or hidden. The switch list becomes partially displayed after a user selects an object from the switch list through some user input gesture, such as a swipe from the left edge of the display when the switch list is hidden, or a selection and drag of an object from a fully displayed switch list. The switch list transitions from partially displayed or hidden to fully displayed when a user indicates, through some user gesture, that a currently active object is being placed back into the switch list. The transitions between states can be animated to provide a pleasing display. Similarly, the position and size of the selected objects representing applications can be animated when transitioning.
The switch list can be represented by a data structure, such as an object-oriented switch list object, which has at least states of being partially displayed, fully displayed or hidden. The list of applications maintained by the operating system can be used to identify and order the applications. Appropriate methods for displaying this switch list object depend on the state of the switch list (partially displayed, fully displayed, hidden), whether there is a transition from a prior state to be animated, the arrangement of the graphical representations of the applications in the switch list, and the position and orientation of the switch list in the display.
In an example implementation, the switch list is displayed as a vertically arranged stack of small thumbnail images on the left edge of a display area. Such a display object can be arranged horizontally, on an angle, or in a shape or other arrangement. An application can be represented by an icon or other object instead of a small thumbnail. The orientation of the switch list in or with respect to a display area also can vary.
In the following description, reference is made to the accompanying drawings which form a part hereof, and in which are shown, by way of illustration, specific example implementations of this technique. It is understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the disclosure.
The following section provides an example operating environment in which a switch list can be implemented.
Referring to
The switch list is displayed to a user on a display 120. This display is interactive, based on user input gestures 122, which can be based on inputs from a pointer device (such as a mouse) or a touch device (such as a touch screen). To provide this interactive display, the operating system has a switch list display manager 124 which receives a switch list 106 and user input gestures 122 and generates display data 126 that includes a graphical representation of the switch list for output to the display 120. As described in more detail below, in response to various user input gestures 122, the switch list display manager displays the switch list in different states, and allows a user to manipulate the items in the switch list, for example to select an application, to undo the selection of an application and to view the available applications.
Given this context, an example implementation will be described in more detail in connection with
With the switch list displayed, a user can select an item in the switch list. For example, on a touch interface a user can touch and drag one of the small thumbnail images 404 from the displayed switch list to a main area on the display. Similarly, using a pointing device, a user can click and drag one of the small thumbnail images 404 from the displayed switch list to a main area on the display.
Given the foregoing example implementations, the switch list is displayed as a vertically arranged stack of small thumbnail images on the left edge of a display area. Such a display object can be arranged horizontally, on an angle, or in a shape or other arrangement. An application can be represented by an icon or other object instead of a small thumbnail. The orientation in or with respect to a display area also can vary.
In various implementations, the displayed switch list can be either fully or partially displayed, or hidden. The switch list becomes partially displayed after a user selects an object from the switch list through some user input gesture, such as a swipe from the left edge of the display when the switch list is hidden, or a selection and drag of an object from a fully displayed switch list. The switch list transitions from partially displayed or hidden to fully displayed when a user indicates, through some user gesture, that a currently active object is being placed back into the switch list. The transitions between states can be animated to provide a pleasing display. Similarly, the position and size of the selected objects representing applications can be animated when transitioning.
Accordingly, the switch list can be represented by a data structure, such as an object-oriented switch list object, which has at least states of being partially displayed, fully displayed or hidden. The list of applications maintained by the operating system can be used to identify and order the applications. Appropriate methods for displaying this switch list object depend on the state of the switch list (partially displayed, fully displayed, hidden), whether there is a transition from a prior state to be animated, the arrangement of the graphical representations of the applications in the switch list, and the position and orientation of the switch list in the display.
If view of the foregoing, a flowchart is shown in
The flowchart of
If the application was already on screen, as indicated at 604, then the application can continue to be dragged around the screen, and the switch list remains 606 in its current state until the application is to the left of the peek threshold, as determined at 608. Initiating the drag operation can be caused by several different gestures, such as by being selected from the switch list or being minimized through a gesture (such as a swipe from the top edge of the screen), or yet other gestures.
Similarly, if the application was not on screen, as indicated at 610, then the application is being dragged, as indicated at 612. Initiating the drag operation can be caused by several different gestures, such as dragging in from an edge of the display (in this example implementation), or yet other gestures. The application can continue to be dragged on the screen, as indicated at 614, and the switch list remains in its current state, until the application is dragged to the right of the peek threshold, as determined at 616. If the gesture originated from a location on the display that is not where the switch list is displayed, for an application that was the currently active application, and the switch list is hidden, then the full display of the switch list can be invoked when a threshold is passed.
Note that the orientation of the switch list on the display determines the direction of movement over the peek threshold that invokes the partially displayed switch list. If the switch list is displayed on the left edge of the display area, then when dragged view of the application begins on screen, the peek threshold is passed going to the left. When the dragged view of the application begins off screen to the left, the peek threshold is passed going to the right. In general, when the dragged view of the application is on screen, movement towards the displayed location of the switch list invokes the switch list; when the dragged view of the application is off screen near the switch list, movement away from the displayed location of the switch list invokes the switch list.
In this example implementation, when the view of an application is dragged past the peek threshold, as determined at 608 or 616, the switch list changes state to the partially displayed view as indicated at 618. At this transition, the display of the switch list, and the display of any graphical representation of any currently selected application, can be animated, in both position and size, to provide for a pleasing display.
While the switch list is partially displayed, a user can continue to manipulate the graphical representation of the currently selected application, as indicated at 620. If the user releases the application, such as by a “drop” gesture, as indicated at 622, the switch list retracts 624 from view (its state changes to hidden).
If the user drags the application back in the direction of the partially displayed switch list, the system determines whether it is dragged within the return threshold, as indicated at 632. If the application is not within the return threshold, then the user can continue to manipulate the application, such as by further dragging it around the display, as indicated at 620. If the application is dragged within the return threshold, then the switch list changes state to fully displayed, as indicated at 636. At this stage, the user can return the application to the switch list.
Having now described an example implementation using a single display area,
For example, it is desirable to allow a user to manipulate an application (it graphical representation, such as a large thumbnail image) among multiple monitors. However, the various thresholds for causing the switch list to be partially displayed or fully displayed are related to the monitor on which the switch list is displayed.
In an example implementation, referring to
Other conditions can be placed on the switch list display. For example, if the switch list is displayed on the left edge of a display area, then it is displayed only on monitors that have a completely unshared (with other monitors) left edge, whether the switch list is partially or fully displayed. Similar conditions can be applied to other switch list placements. Also, the switch list is partially displayed on the monitor that has a current cursor location. Thus, if the cursor switches over to another monitor, then the partially displayed switch list is removed. Similarly, if the switch list is partially displayed on a monitor, then it becomes fully displayed only in response to gestures on the same monitor that drag an application to the return threshold (see
Having now described an example implementation, a computer with which components of such a system are designed to operate will now be described. The following description is intended to provide a brief, general description of a suitable computer with which such a system can be implemented. The computer can be any of a variety of general purpose or special purpose computing hardware configurations. Examples of well-known computers that may be suitable include, but are not limited to, personal computers, server computers, hand-held or laptop devices (for example, media players, notebook computers, cellular phones, personal data assistants, voice recorders), multiprocessor systems, microprocessor-based systems, set top boxes, game consoles, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
With reference to
Additionally, computer 800 may also have additional features/functionality. For example, computer 800 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in
Computer 800 may also contain communications connection(s) 812 that allow the device to communicate with other devices over a communication medium. Communication media typically carry computer program instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal, thereby changing the configuration or state of the receiving device of the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Communications connections 812 are devices that interface with the communication media to transmit data over and receive data from communication media, such as a network interface.
Computer 800 may have various input device(s) 814 such as a keyboard, mouse, pen, camera, touch input device, and so on. Output device(s) 816 such as a display, speakers, a printer, and so on may also be included. All of these devices are well known in the art and need not be discussed at length here. Various input and output devices can implement a natural user interface (NUI), which is any interface technology that enables a user to interact with a device in a “natural” manner, free from artificial constraints imposed by input devices such as mice, keyboards, remote controls, and the like.
Examples of NUI methods include those relying on speech recognition, touch and stylus recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, voice and speech, vision, touch, gestures, and machine intelligence, and may include the use of touch sensitive displays, voice and speech recognition, intention and goal understanding, motion gesture detection using depth cameras (such as stereoscopic camera systems, infrared camera systems, and other camera systems and combinations of these), motion gesture detection using accelerometers or gyroscopes, facial recognition, three dimensional displays, head, eye , and gaze tracking, immersive augmented reality and virtual reality systems, all of which provide a more natural interface, as well as technologies for sensing brain activity using electric field sensing electrodes (EEG and related methods).
Each component of this system that operates on a computer generally is implemented by software, such as one or more computer programs, which include computer-executable instructions and/or computer-interpreted instructions, such as program modules, being processed by the computer. Generally, program modules include routines, programs, objects, components, data structures, and so on, that, when processed by a processing unit, instruct the processing unit to perform particular tasks or implement particular abstract data types. This computer system enforces licensing restrictions may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
Alternatively, or in addition, the functionally described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The terms “article of manufacture”, “process”, “machine” and “composition of matter” in the preambles of the appended claims are intended to limit the claims to subject matter deemed to fall within the scope of patentable subject matter defined by the use of these terms in 35 U.S.C. §101.
Any or all of the aforementioned alternate embodiments described herein may be used in any combination desired to form additional hybrid embodiments. It should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific implementations described above. The specific implementations described above are disclosed as examples only.