August 21, 2022

App UI/UX Template Analyzer

Scritto il August 21, 2022  •  3 minuti  • 639 parole

Si propone uno strumento per l’analisi della interfaccia grafica degli screen. Mediante una visione 3D sarebbe possibile rendere molto più semplice la compresione della composizione delle schermate.

App UI/UX Template Analyzer in via si sviluppo, ancora non è ben chiaro il come esso dovrebbe essere ma l’idea di basa è quella di avere la possibilità di visualizzare in maniera separata ogni componete e vista della pagina.

Attualmente è possibile rappresentare le sezioni degli screen, anche su differenti altezze a partire dal fondo chiamati layer.

Questo strumento è stato sviluppato mediante l’uso della libreria grafica 3D Babylon.js. Lo studio e l’uso di questa libreria è stato molto entusiasmante, ogni sviluppatore front-end credo dovrebbe assolutamente provare.

Step1 - Importare il tool nella pagina

Per poter utilizzare il tool basta basta includere nella pagina i seguenti script:

<!-- Babylon.JS -->
<script src="https://cdn.babylonjs.com/babylon.max.js" type="text/javascript"></script>
<!-- App UI/UX Template Analyzer -->
<script src="appanalyzer.js"></script>

Step2 - Scegliere dove visualizzare il tool

Per poter inserire il tool nella pagina basta inserire un nodo canvas. La dimensione dello screen dovrà essere gestita dallo sviluppatore, opzionalmente è consigliato applicare un identifiativo o una classe per poter accedere ad esso.

<!-- resto della pagina -->
<body>
    <!-- contenuto del body -->
    <canvas id="boxAnalyzer" style="width:100%; height:100vh;"></canvas>
    <!-- contenuto del body -->
</body>
<!-- resto della pagina -->

Il tag proposto mostra un canvas con identificativo boxAnalyzer le cui dimensioni occupano tutta la larghezza a disposizione ed altezza pari all’altezza del dispositivo in uso.

Step3 - Inizializzare il tool

A questo punto bisogna inizializzare il tool, si esamini il seguente codice:

window.addEventListener('DOMContentLoaded', function(){
    appanalyzerInit('/screen/uno/screen.json', {
        'selector': '#boxAnalyzer',
        'debug': false
    });
});

Per poter inizializzare il tool bisgona invocare la funzione appanalyzerInit, si consiglia di invocarlo nel momento in cui la pagina risulta caricata ascoltando appunto l’evento DOMContentLoaded come nell’esempio.

appanalyzerInit prende in input due parametri :

Step4 - Definire l’input per il tool

Il tool prende in input un oggetto come il seguente:

{
    "settings": {
        "width": 375,
        "height": 774,
        "layer_h": 15,
        "img": "/screen/uno/all.png"
    },
    "layers": [
        {
            "name": "part1",
            "width": 375,
            "height": 63.9,
            "x": 0,
            "y": 0,
            "l": 1
        },
        {
            "name": "part2",
            "width": 375,
            "height": 640.6,
            "x": 0,
            "y": 63.9,
            "l": 0
        },
        {
            "name": "part3",
            "width": 375,
            "height": 63.9,
            "x": 0,
            "y": 704.4,
            "l": 1
        }
    ]
}

L’oggetto è suddiviso in due parti:

Nella sezione settings in particolare troviamo il campo img che contiene un URL che punta ad uno screenshot dello screen da analizzare accompagnate dalla sua larghezza width e la sua altezza height mentre layer_h definisce quanto dovranno essere alti i livelli da visualizzare.

In layers sono definite tutte le sezioni che si vogliono evidenziare. Essi sono dei ritagli di immagini definiti da una selezione di punti che partono dal punto di coordinate (x, y) ed il successivo (x + width, y + height). L’origine di tali punti è il vertice in alto a sinistra della immagine (come in tutti i programmi di grafica)

La seguente grafica descrive in maniera astratta la definizione di selezione usata dal tool:

definition layer coordinates

Conclusione

Si conclude quindi riproponendo l’esempio proposto all’inizio del’articolo. In questo esempio si analizza uno screen e sono presenti 3 layer: si evidenzia l’uso di una HeaderBar ad una BottomNavigationBar.

comments powered by Disqus
Follow me

I work on everything coding and tweet developer memes