視覺法則 – 格式塔原則

這篇延續上篇格式塔的理論,整理了一些常用的原則,如同上一篇最後面提到的,格式塔的四個基礎,就好比數學的加、減、乘、除,而它的原則就好比代數運算。所以只要能夠掌握基礎,或許也可以拼湊出一個設計原則。

格式塔的原則可以套用在不同的領域,例如:平面、介面、插畫、攝影、廣告、空間…等等,小到介面設計,大到建築設計,只要與視覺相關,就用的到。以格式塔作為基礎所發展出來的原則很多,但因身為介面設計師,所以下面就以介面設計常用的格式塔原則來進行討論。

這篇文章引用了設計師 Carolann Bonner 所提供的六個常用原則,加上二個我認為比較重要的原則:

  1. Similarity 相似
  2. Proximity 相近
  3. Continuation 連續
  4. Closure 封閉
  5. Enclosure 圍繞
  6. Figure-Ground 主體-背景
  7. Common Fate 共同命運
  8. Symmetry 對稱

這八個原則幾乎包含了介面設計常用的原則還有技巧,了解原則可以幫助理解「為什麼」要使用這樣的設計樣式(Design Pattern),請記得格式塔理論的核心在於「整體大於個體的加總」,所以這些原則是來判斷整體視覺的感知結果,而每個原則背後,都隱含著格式塔理論的四個基礎,看完這些原則後可以思考一下,跟四個基礎之間的關聯性。

1. Similarity 相似

個別相似的物體會被視為整體的一部份。相似特徵的物體,不論是它的形狀、顏色、大小、排列方式…等等,只要相似,我們的視覺就會認為是一個整體。

example_Similarity

上圖中可以看出外觀特徵相似的個體(不同顏色),可以分別視為一個整體,即使打亂順序(B),白球還是會被大腦歸為一個整體。

應用在介面設計:

components_lists_keylines_single9

在上圖中,可以看出左邊一排圓形的圖片,可以視為一個整體,每一張圓形圖片都代表一個聯絡人,所以在這個介面上,就可知道這些資訊的整體性。而右下方的圓形元件,是Floating Action Button,則是利用了下面會提到的「主體-背景」原則,與內容做分割來避免混洧。

2. Proximity 相近

當個別的物體距離相近,我們的視覺會將他視為一個整體。

example_Proximity

上圖A中,個體之間左右間距較小,圖B則是上下間距較小,構成了圖A是每一橫排為一個整體,圖B則是每一直排為一個整體的視覺效果。

應用在介面設計:
components_cards33

透過物體與物體間距的控制,可以知道資訊排列越是接近,他們的關係就越是強烈,可以視為一個整體,如果距離較遠,就可以視為與其他個別的整體。很常應用在排版之間關係的操作。

3. Continuation 連續

連續的個別物體,形成的視覺動線,會視為一個整體。就算被中斷,我們的大腦仍然會判定為一個整體,因為我們的視覺容易感知連續的形式,而非離散的片段。

example_Continuation

上圖中,我們的視覺會告訴我們有兩個重疊的圓圈,而這些圓圈是由連續的小圓形所構成,我們的視覺不會因為它交錯,而判斷成三種不同的圖形。就像1跟2之間交集的3,視覺上他是不存在的,除非你去突顯它。

應用在介面設計:

continu

上圖紅框的部份,會看到數個灰色的點點,在介面設計上我們稱它為「Slider Dot Navigation」,通常是用來做侷部畫面的導覽切換,這就是連續性的應用,在些灰點在連續排列的情況下,我們會將視為一個整體,而非單純的灰、黃點,它會透過動態(自動換圖)的方式來提醒使用者,畫面是可以進行切換的。

4. Closure 封閉

當我們的視覺感知到物體是不完整的,但我們大腦仍會將不完整的資訊填滿,並將視為一個整體。

example_Closure

上圖看起來像是圓形2蓋在圓形1上面,但事實上,圓形1不是一個完整的圓型,可能也不是一個圓形,但我們的大腦會自動把圖1,填補成一個完整的圓型,這個原則充份解釋了整體大於個體加總的核心概念。

運用在介面設計:

components_cards_content1

上圖中畫面的下方,我們知道可以繼續瀏覽,但為什麼會知道畫面可以延續?因為封閉的原則,我們知道下面的卡片只有顯示到一半,但人類的眼睛會自然填補失去的資訊,意識到下方還有沒看完的資訊,所以繼續下滑直到資訊結束。

5. Enclosure 圍繞

將個別的物體透過任何方式(線條、色塊)將它們圍繞在一起,被圍繞的群組,可以視為一個整體。這個原則是設計師  Carolann Bonner 在的文章中所提到的一個原則,我找了一些網路上的資料,比較少提到這個原則,但實際上還蠻常用在介面設計上。
example_Enclosure

上圖A左上方區塊被線框圍繞,可以視為一個整體,圖B則是左上方區塊以灰色作底,也可以視為一個整體。

應用在介面設計:

components_dividers_usage2

上圖可以看到畫面中有明顯的分隔線,透過分隔線,可以知道內容所屬的範圍。而卡片(card)的樣式,也是透過卡片來圍繞資訊,也是圍繞原則的應用方式。

6. Figure-Ground 主體-背景

在整體的視覺條件下,某個物體相較於其他物體來的明顯,我們會大腦會將它判定為主體,而將他以外的物體視為背景。

example_Figure-Ground

上圖右上角的藍綠色圓形,明顯突出於其他灰色的圓形,因此它為主體,而灰色的圓形則為背景。

應用在介面設計:

components_dialogs_content1

對話框(Dialog),很常應用在在介面或網頁設計上,因為要突顯這塊的資訊,所以在背景蓋上一層半透明的黑色,此時使用者就會意識到這個對話框是主體,而其他區域則是背景。

7. Common Fate 共同命運

在整體的視覺條件下,某些個別物體,或是同時、同速、同方向往一個地方移動,這些個別物體會被視為整體。這個原則常用在動畫效果的呈現上。

example_Common Fate

上圖有很多的藍綠色圓形,其中有幾個同時往左上方偏移,因為共同的命運,將其視為一個整體。

應用在介面設計:

components-buttons-fab-transition_speeddial_02

上圖是Material Design 中,還蠻常使用的漂浮按鈕(Floating Action Button),如果一個按鈕裡面有多種功選或選擇,就會以像是上面圖片的方式呈現,幾乎在同一個時間點出現不同選擇,我們的大腦就會意識到,這些功能是一個整體。

8. Symmetry 對稱

為了更簡單的去理解整體,我們的視覺,會趨向將對稱的物體,視為一個整體。

example_Symmetry

上圖中,依序出現的是左大括號、右大括號、左中括號、右中括號、左大括號、右大括號,還是一組大括號、中括號、大括號? 大多人應該是後者,因為對稱性,會將互相對稱的個體視為整體。

應用在介面設計:

Symmetry

對稱的原則無所不在,只是因為使用的太過於頻繁,反而會忽略掉它的存在,上圖我將卡片樣式的畫面做了一些調整,把左右對稱拿掉,讓右邊存在的空隙小於左邊,在這樣的畫面下,因為畫面不對稱,會感覺右邊內容還沒有結束,所以可以知道,很多時候我們運用了畫面的對稱性來包住內容,引導視覺開始與結束的位置。就像是網頁設計,通常會有header,也會有footer,包含在中間的就是body,才能構成一個完整的網頁(瀑布式部局的網站除外)。

 

結論

上述八個原則,是介面設計常用原則,但如同前面所討論的,格式塔原則是視覺認知整體的方式,應用的範圍不侷限在介面設計,尤其是平面設計更是經常在使用這些原則。了解原則之後,我們可以依照這些原則去發展出一些新的介面設計元素。等到對這些原則能夠清楚的掌握且迎刃有餘,就可以開始「打破」這些原則,來創造更有張力的視覺效果。從不理性中找出理性是設計,再從理性中找出不理性,那就是藝術了!

如果想了解更多格式塔的原則,下面提供一些參考的文章:

場論與格式塔 – 陳坤成
完形心理學的視覺法則 – fourdesire
Gestalt psychology -wiki
Gestalt_principles – scholarpedia
Using Gestalt Principles for Natural Interactions – Carolann Bonner

 

 

廣告

iOS、Android 色彩透明度的標示方式

在繪製介面時,調整顏色的透明度 (transparent) 是一個很常用的技巧,好處在於:

1.減少灰階顏色定義

2.維持介面顏色的一致性

早期網頁設計還沒支持透明度的屬性時,設計師要自己調色,來控制顏色的明暗,所以會發現許多網站關於灰階顏色的定義,基本上都用過一輪,但其實這樣的方式比較沒效率,後續要維護也會比較麻煩。

在app的開發上,灰階的顏色通常會使用在字體與線條上,為了讓字體的閱讀更加舒服,內文字體不會使用純黑色(#000000),而會使用「灰色」來代替,但實色的灰色會因為背景色的不同,會讓app文字內容的易讀性有所差異。

transparent-01

上圖大概就可以知道為什麼要用帶透明度的黑色來取代實色的灰色,因為帶透明度的黑色,在背景稍深時,還是有比較好的閱讀性,如果是實色,字體就會被整個畫面給吃掉,不易閱讀。當然也可以多定義一個新的灰色,但那就是要多記一個顏色。

而在 Google material design  裡 Typographic 有提到文字透明度的設定說明:

trasparent

第二段提到,建議文字顏色對比至少 4.5:1 建議是 7:1,最後定義出 54% black 與 87% black,雖然我有試著去算出這兩個數字,但最後還是找不到一個合理的算法(求解)。(百分比可以依需求自己設定,這邊只是舉 google 的例子,但我還是好奇這兩個數字是怎麼算出來的)。

2015/04/28補充:關於 4.5:1與7:1 的數值可以參考w3c的規範

2015/08/12補充:這篇文章被轉載,這邊再補充一下對比值的檢查工具

至於透明度定義好,要怎麼提供給工程師,說明如下:

iOS

iOS 在給顏色的值,可以直接給 alpha(α) 值,也就是像是網頁 css rgba 的標式方式,最後的 α 值,給 0~1 之間 0 代表完全透明,1 代表完全不透明,因此在 iOS  的標示上不會有什麼問題。

Android

Android 就比較麻煩,因為要給 hex 的色號,之前花了一點時間理解透明度的 hex 換算方式;hex全名是 hexadecimal,也就是 16 進位,這是除了 rgba 外,另一個比較常見的方式,在網頁設計上也經常在使用(在色號上會給#符號的,就是使用hex的方式給色)。

通常不指定透明度時,給的 hex 值不含井字號會有六碼:例:「#aabbcc」,aa 用來控制紅色、bb 用來控制綠色、cc 用來控制藍色,如果要補上透明度,就要在 aa之前加上透明度的 hex 值。

之前為了透明度的問題,手動算換了 16  進位的透明度值,以下是 rgba 跟 hex 的概略的換算方式(不想算數學就直接跳到表格,因為算的事情交給電腦處理就好):

transparent-02

但後來才發現有人整理好了不同透明度對應的 hex 值。– stackoverflow,如下表:

  • 0% – 00
  • 5% – 0D
  • 10% – 1A
  • 15% – 26
  • 20% – 33
  • 25% – 40
  • 30% – 4D
  • 35% – 49
  • 40% – 66
  • 45% – 73
  • 50% – 80
  • 55% – 8C
  • 60% – 99
  • 65% – A6
  • 70% – B3
  • 75% – BF
  • 80% – CC
  • 85% – D9
  • 90% – E6
  • 95% – F2
  • 100% – FF

所以如果要提供帶有透明度的 hex 值,就直接在 hex 值上的最前面,加上透明度的 hex 值就行了。在標示給工程師的文件中,就可以直接提供帶有透明度的 hex 色碼,例:「#cc000000」,我想工程師看到你如此貼心,應該也會挺開心的。

結綸

這篇的重點,其實是在強調,在繪製 app 時,字體與線條的線色盡量使用帶有透明度的黑色,而不要直接指定實色的灰色(如果是要那種紅底綠線、藍底黃色的特殊需求,不在此討論範圍)。

這也是我之前在做 app 時,因為定義太多不同的灰色,常常困擾我的問題,有時我也搞不清楚那個背景要用那個灰色,所以到最後每個位置的灰色定義都不一樣,維護上也就更加麻煩,你會發現工程師會一直跑來問你這個字體要什麼顏色…。

而背景色,建議還是以實色為主,因為每個 app 都會定義自己的主、副色,背景色如果用有透明度的顏色,不小心的話,有時會影響主色與副色的使用,但這是依 app 的需求取捨。

上述的說明,是基於白色的背景做為說明,如果是以深色的背景為主,那可以用白色帶透明度的字體顏色也是一樣的效果。

關於色彩的定義,可以參考這篇文章:

RGB、HSL、Hex 網頁色彩碼,看完這篇全懂了 – CSS可樂

有任何問題,歡迎討論!

介面設計時使用的繁體中文字體 for Android

關於 Android 的介面設計,在前幾篇有提到相關的製圖環境設定:

如何在illustrator 上設定Android的製圖環境

而這篇主要介紹如何在 Android 系統模擬繁體中文字體環境, 與 ios 亦同,在中文字體部份沒太多選擇,雖然 Google 與 Adobe有一起開發出開源字體 (Noto CJK),但就目前在來看,原生 Android 的預設中文字體似乎還是只有一種, 加上各家廠牌手機都有自行開發基於 Android 系統的介面,例如:Htc 的 sense、小米的米 ui…等等,所以各家廠牌的手機顯示出的中文字體也不太一樣,而使用者也可以透過軟體來更換系統字體,但這篇不針對其他客製化的字體做討論。

在Android的中文繁體原生字體是DroidSansFallback,只有這個字體可以用,所以我就用這個字體當作說明的標準。

DroidSansFallback  (for windows,mac可以抓回去自行測試,ttf 檔)

這個字體的結構與對岸的文泉驛微米黑相同,根據我的找到的資料 DroidSansFallback 應該是文泉譯的團隊跟 Google 團隊一起開發的,而繁體字是直接轉自簡體字,所以有些筆劃是對岸習慣的比劃,相關文章的討論可以看這篇:

GB 18030 就在你身邊 – justfont

android_font_size-01

上圖是兩種字體的比較,相同的字級下看起來差異不大。而在 Android 的開發環境,字體的單位是 sp(Scaleable pixels),有點類似 dp,但就記得字體的單位是 sp 就好了,單位相關的文章最近 Google Material Design 也有釋出相關的設計說明:

Units and measurements – Google Material Design

以下是我在繪製 Android 會注意到的事項:

1.中文字體大小至少12sp

Android 中文字體最小就是 12sp,小於 12sp,根據我找到的資料可能會出現錯誤。stackoverflow

2015/04/20補充說明:
根據網友的補充,字體可以小於12sp,但會出現錯誤提醒,並非無法設定小於12sp的字體。
同時再附上android 按鈕樣式產生器:Android button maker – Angrytools.com

2.依不同的開發環境同比例放大

前面幾篇我有提到我是屬於做大縮小派的,所以我不會以1dp=1px做為開發環境,通常是1dp=3px來做為android的繪製環境。

所以根據我測試的結果,在 3 倍的尺寸下繪製介面(1920px*1080px),字體大小我會x3,例如:12sp 的字要用 36px,14sp 的字要用 42px,以此類推。

android_font_size-02

上圖是我針對不同的 dpi所整理出來的 sp 與 px 之間的轉換,但根據我的實際操作結果 (htc m7),還是會有誤差,真正 app 的字體會略小於設計時所模擬出的畫面的字體約 1sp,也就是說如果我要完全符合我預想的字體大小,所有的字體在設計標示時,要再加 1sp,例如:在 480ppi 的製圖環境下, 36px 的字體在設計稿上,本來是要標 12sp,為了符合大小,會標 13sp,以此類推。

3.粗細的設定

關於粗細的設計,我不太確定(歡迎指正),根據我的測試,中文字體可以設定 Light 與 Regular,但粗細實際比較下,沒什麼改變,但如果在 Regular 的字體下再設成 bold,會略粗。但我通常不會再針對粗細做設定,Regular 的粗體我認為太粗,不好使用。

4.字體的可用樣式

字體的可用樣式不多,基本上就是:顏色、透明度、陰影、背景色,大概就這樣,互相搭配使用,雖然只有一種字體,也是可以有九九八十一種變化呢!

5.請設定好字體的使用規範

其實就是跟網頁一樣,h1~h6請定義好,內文、連結、標籤…等等,定義好在不同情況上字體的使用方式,這在往後要做標示或是重新設計,都會有所幫助。

以上是我針對Android界面設計繁體中文字體環境模擬的建議,當然這些規則都會因為新的技術有所調整,例如新的 Noto 字體的開放使用等等,介面設計沒有一定的方法,所以如果有更好的方式,也歡迎討論。