Some embodiments described herein relate to application user interfaces, and in particular to dynamically modifying layout of graphical user interfaces based on visual aesthetics.
User interface design for applications is the design of user interfaces for machines and software-based applications, such as applications for computers, mobile devices, tablets, and the like. The design tends to focus on anticipating what users might want or need to do and provide interface elements that are easy to access, understand, and use.
Traditionally, the user interfaces of an application, and thus how users experience an application and ease of use, are designed by a few designers of a design team. For many designers, the designer is on a deadline and thus focuses on the series of screens, pages, and visual elements a user sees and uses to interact with the application.
The drawbacks with the user interface design include the possibility of bias on the design based on the designers, the user interface being static until it is changed in an application update, and no ability to change the user interface between application updates.
Some embodiments are directed to a method in a visual analysis engine of a networked hardware device for dynamically modifying a graphical user interface of an application. The graphical user interface has a plurality of user-selectable elements. The method includes determining a number of user-selectable elements relative to a total number of the plurality of user-selectable elements that are selected more frequently than other user-selectable elements based on tracking user selections among the user-selectable elements over a period of time. The method further includes selecting a visual aesthetic pattern from among a set of visual aesthetic patterns based on the number of user-selectable elements. The method includes dynamically modifying layout, during runtime of the application, of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected and displaying the graphical user interface with the modified layout of the user-selectable elements of the graphical user interface.
The method may further include receiving a change in a display parameter of a display device that is displaying the graphical user interface. A current layout of user-selectable elements of the graphical user interface is obtained. A usage pattern based on tracking user selections among the user-selectable elements of the current layout is obtained. A new layout is created of the user-selectable elements of the graphical user interface by adjusting size and/or location of the user-selectable elements of the current layout based on the usage pattern for the current layout and the visual aesthetic pattern that was selected. The new layout of the user-selectable elements of the graphical user interface is displayed.
The method may further include determining locations of the number of user-selectable elements. For each of the number of user-selectable elements, the location of the user-selectable element is compared to a characteristic location of each of the visual aesthetic patterns. A distance between the location of the user-selectable element to the characteristic location of each of the visual aesthetic patterns is determined. The visual aesthetic patterns that has a lowest total distance between the locations of the number of user-selectable elements and the characteristic location is determined and selected.
The method may further include receiving usage patterns of user selections among the plurality of user-selectable elements during a beta testing execution phase of the application. The number of user-selectable elements relative to the total number of the plurality of user-selectable elements is determined based on the usage patterns.
Corresponding visual analysis engines of a hardware computer are disclosed. In some embodiments, the visual analysis engine includes a processor and a memory coupled to the processor, wherein the memory stores computer program instructions that are executed by the processor to perform operations that include determining a usage pattern of a plurality of user-selectable elements of a graphical user interface of an application. The operations further include determining a number of user-selectable elements relative to a total number of the plurality of user-selectable elements that are selected more frequently than other user-selectable elements based on the usage patterns. The operations further include selecting a visual aesthetic pattern from among a set of visual aesthetic patterns based on the number of user-selectable elements. The operations further include dynamically modifying layout, during runtime of the application, of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected. The operations further include displaying the graphical user interface with the modified layout of the user-selectable elements of the graphical user interface.
The operations of the visual analysis engine may further include determining that a display view of a display device that is displaying the graphical user interface is a desktop view. These operations further include dynamically modifying layout of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected and the desktop view. These operations further include receiving an indication that the graphical user interface is being displayed on a display of a second display device having a second display view that is a mobile device view. These operations further include dynamically modifying layout of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected and the mobile device view.
The operations of the visual analysis engine may further include determining that a display view of a display device that is displaying the graphical user interface is a mobile device view. These operations further include dynamically modifying layout of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected and the mobile device view. These operations further include receiving an indication that the graphical user interface is being displayed on a display of a second display device having a second display view that is a desktop view. These operations further include dynamically modifying layout of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected and the desktop view.
It is noted that aspects of the inventive concepts described with respect to one embodiment may be incorporated in different embodiments although not specifically described relative thereto. That is, all embodiments or features of any embodiments can be combined in any way and/or combination. These and other objects or aspects of the present inventive concepts are explained in detail in the specification set forth below.
Advantages that may be provided by various of the concepts disclosed herein include dynamically modifying layout of user-selectable elements of a GUI of an application during runtime without having to update the application. The layout can be modified based on a change in display view, a change in one or more display parameters, the device that is running the application, usage patterns determined over periods of time, user input, and on user feedback. The advantages further allow the layout to be dynamically modified based on changing styles over time based on the usage patterns and user feedback without requiring the application to be updated. This results in a better user experience, which can lead to increased use of an application compared to other applications that have fixed layouts that cannot be changed between application updates.
Other methods, devices, and computer program products, and advantages will be or become apparent to one with skill in the art upon review of the following drawings and detailed description. It is intended that all such additional systems, methods, or computer program products and advantages be included within this description, be within the scope of the present inventive concepts, and be protected by the accompanying claims.
The accompanying drawings are included to provide a further understanding of the disclosure and are incorporated in and constitute a part of this application. In the drawings:
Embodiments of the present inventive concepts now will be described more fully hereinafter with reference to the accompanying drawings. Throughout the drawings, the same reference numbers are used for similar or corresponding elements. The inventive concepts may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the inventive concepts to those skilled in the art. Like numbers refer to like elements throughout.
It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the scope of the present inventive concepts. As used herein, the term “or” is used nonexclusively to include any and all combinations of one or more of the associated listed items.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes” or “including” when used herein, specify the presence of stated features, integers, steps, operations, elements, or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs. It will be further understood that terms used herein should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
Some embodiments described herein provide methods or visual analysis (VA) engines for dynamically modifying layout of a graphical user interface of an application where the graphical user interface has a plurality of user-selectable elements. According to some embodiments, a VA engine determines a number of user-selectable elements relative to a total number of the plurality of user-selectable elements that are selected more frequently than other user-selectable elements. The determination may be based on a usage pattern of a plurality of user-selectable elements of a graphical user interface of an application. The VA engine selects a visual aesthetic pattern from among a set of visual aesthetic patterns based on the number of user-selectable elements. The VA engine dynamically modifies layout, during runtime of the application, of the user-selectable elements of the graphical user interface based on the visual aesthetic pattern that was selected. The VA engine displays the graphical user interface with the modified layout of the user-selectable elements of the graphical user interface.
The VA engine 102 communications with application devices 120. Application device 1201 has a display 122 that displays a graphical user interface 124 of an application where the graphical user interface displays user-selectable elements 126, a display interface 128 that controls the display 122, a tracker 130 that tracks user selections of the user-selectable elements 126, and a network interface 132 that transmits messages to the VA engine 102 and receives messages from the VA engine 102 via network 136 or network 136 and radio access network 138.
Network 136 may be a local area network, the Internet, a wide-area network, and the like. Radio access network 138 may be a local wireless network or a wireless mobile communication network.
The tracker 130 may be a separate component, part of the display interface 136, or part of a VA client 132 that is installed on the application device 1202. The application device 120 may be a personal computer, a tablet, a mobile device, or any other device that displays graphical user interfaces of applications.
Initially, at operation 200, user selections among user-selectable elements 126 of graphical user interface 124 displayed on a display 122 of an application device 120 over a period of time are tracked. At operation 202, the VA engine 102 determines a usage pattern based on the tracking of user selections of the user-selectable elements. The usage pattern is stored in usage pattern database 112 at operation 204. Each usage pattern may have information such as an identification of the application, an identification of the graphical user interface 124, an identification of the application device 120, the current layout of the user-selectable elements, the number of user selections of the user-selectable elements that have been selected during the period of time, which user-selectable elements were selected and the time of user selection, the location of a user-selectable element when it was selected, the number of times a user-selectable element was selected, and the like.
The usage pattern database 112 stores multiple usage patterns from multiple trackings of multiple users of an applications. The multiple usage patterns may be compared to identify short-term trends and long-terms trends of user selections of the user-selectable elements.
At operation 206, a number of user-selectable elements 126 relative to the total number of user-selectable elements 126 that are selected more frequently than other user-selectable elements is determined.
The number of user-selectable elements may be a pre-defined number, a number based on the usage pattern, a number based on the visual aesthetic pattern selected at operation 208, the average reaction time a user takes to make a selection, etc.
Returning to
Turning to
While
Turning to
Turning to
At operation 906, a determination is made of which of the visual aesthetic patterns has a lowest total distance between the locations of the number of user-selectable elements and the characteristic location(s). For example, in
Returning to
The layout of the user-selectable elements 126 is dynamically modified in one embodiment when a display parameter is changed. Turning to
At operation 1202, the current layout of the user-selectable elements 126 of the graphical user interface 124 is obtained. At operation 1204, a usage pattern is obtained based on tracking user selections among the user-selectable elements of the current layout.
At operation 1206, a new layout of the user-selectable elements 126 of the graphical user interface 124 is created by adjusting, based on the usage pattern for the current layout and the visual aesthetic pattern that was selected, the size of the user-selectable elements 126, the location of the user-selectable elements 126, or the size and location of the user-selectable elements 126. At operation 1208, the new layout of the user-selectable elements 126 of the graphical user interface 124 is displayed on the display device.
Turning now to
In one embodiment illustrated in
Returning to
In one embodiment, the score is a normalized score of the total distance between the locations of the number of user-selectable elements and the characteristic location or locations of the visual aesthetic layout. For example, assume the score of a first visual aesthetic layout is 45, the score of a second visual aesthetic layout is 48, the score of a third visual aesthetic layout is 60, and the score of a third visual aesthetic layout is 90. The normalized scored would then be 0.5 for the first visual aesthetic layout, 0.53 for the second visual aesthetic layout, 0.66 for the third visual aesthetic layout, and 1.00 for the fourth visual aesthetic layout. The visual aesthetic layouts having the lowest normalized scores may then be provided as a recommendation to business stakeholders at operation 1310. The business stakeholders may be the members of the design team that is responsible for the software development cycle, businesses that are partaking in the beta testing, businesses that have or will purchase the software, etc.
The business stakeholders select the visual aesthetic pattern that will be used in the current software development cycle.
Returning to
Turning now to
At operation 1906, the VA engine 102 receives an indication that the graphical user interface 126 is being displayed on a display of a second display device that has a display view that is a mobile device view. At operation 1908, the VA engine 102 dynamically modifies layout of the user-selectable elements 126 of the graphical user interface 124 based on the visual aesthetic pattern that was selected and the mobile device view. At operation 1910, the modified layout of the graphical user interface 126 is displayed on the display view of the second display device.
At operation 2106, the VA engine 102 receives an indication that the graphical user interface 126 is being displayed on a display of a second display device that has a display view that is a desktop view. At operation 2108, the VA engine 102 dynamically modifies layout of the user-selectable elements 126 of the graphical user interface 124 based on the visual aesthetic pattern that was selected and the mobile device view. At operation 2110, the modified layout of the graphical user interface 126 is displayed on the desktop view of the second display device.
In the embodiment shown in
In the embodiment shown in
In the embodiment shown in
Thus, example systems, methods, and non-transitory machine readable media for controlling monitoring systems to stop and start monitoring have been described. The advantages provided include dynamically modifying layout of user-selectable elements of a GUI of an application during runtime without having to update the application. The layout can be modified based on a change in display view, a change in one or more display parameters, a change in the device that is running the application, usage patterns determined over periods of time, user input, user feedback, and the like. The advantages further allow the layout to be dynamically modified based on changing styles over time based on the usage patterns and user feedback without requiring the application to be updated. This results in reduced cost of application development and a better user experience, which can lead to increased use of an application compared to other applications that have fixed layouts that cannot be changed between application updates.
As will be appreciated by one of skill in the art, the present inventive concepts may be embodied as a method, data processing system, or computer program product. Furthermore, the present inventive concepts may take the form of a computer program product on a tangible computer usable storage medium having computer program code embodied in the medium that can be executed by a computer. Any suitable tangible computer readable medium may be utilized including hard disks, CD ROMs, optical storage devices, or magnetic storage devices.
Some embodiments are described herein with reference to flowchart illustrations or block diagrams of methods, systems and computer program products. It will be understood that each block of the flowchart illustrations or block diagrams, and combinations of blocks in the flowchart illustrations or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart or block diagram block or blocks.
It is to be understood that the functions/acts noted in the blocks may occur out of the order noted in the operational illustrations. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction to the depicted arrows.
Computer program code for carrying out operations described herein may be written in an object-oriented programming language such as Java® or C++. However, the computer program code for carrying out operations described herein may also be written in conventional procedural programming languages, such as the “C” programming language. The program code may execute entirely on the user's computer, partly on the user's computer, as a standalone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Many different embodiments have been disclosed herein, in connection with the above description and the drawings. It will be understood that it would be unduly repetitious and obfuscating to literally describe and illustrate every combination and subcombination of these embodiments. Accordingly, all embodiments can be combined in any way or combination, and the present specification, including the drawings, shall be construed to constitute a complete written description of all combinations and subcombinations of the embodiments described herein, and of the manner and process of making and using them, and shall support claims to any such combination or subcombination.
In the drawings and specification, there have been disclosed typical embodiments and, although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation, the scope of the inventive concepts being set forth in the following claims.