UI 設計:為什麼按鈕不應為了動畫而阻礙使用者輸入

UI 設計:為什麼按鈕不應為了動畫而阻礙使用者輸入

核心原則:絕不要強迫使用者等待動畫

使用者介面元素,特別是按鈕,應優先處理使用者意圖的註冊,而非該意圖的視覺呈現。當按鈕觸發動畫時,系統必須繼續接受並緩衝輸入,而不是在動畫完成前忽略點擊。在轉換期間阻礙輸入會在使用者體驗中創造一個「死區」,將簡單的互動轉化為一場令人沮喪的時機掌握練習。

此原則至關重要,因為動畫是旨在掩蓋載入時間或緩解狀態轉換的輔助工具;它們並非介面的主要功能。當程式碼被寫成必須等待動畫結束後才接受下一個指令時,動畫就不再是輔助元素,而變成了功能瓶頸。

個案研究:iOS 與 Android 上的圖片旋轉

比較 iPhone 與 Nothing Phone (Android) 上的圖片旋轉功能,可以發現兩者在動畫期間處理輸入的方式有著根本的不同:

  • 緩衝輸入 (iPhone): 當使用者快速點擊旋轉按鈕時(例如點擊八次),iPhone 會記錄並緩衝這些點擊。圖片會持續旋轉,且每個待處理的旋轉會在前一個完成後依序發生。其結果是可預測的「無操作 (no-op)」效果,即八次 90 度旋轉會讓圖片回到原始方向。
  • 忽略輸入 (Nothing Phone): Nothing Phone 提供點擊的觸覺與音效確認,但如果前一個旋轉動畫仍在進行中,它會忽略輸入。快速點擊會導致指令遺失,使得圖片相對於點擊次數而言處於不可預測的狀態。

對無障礙設計與「情境型進階使用者」的影響

設計在動畫期間阻礙輸入的介面不僅僅是美學偏好問題;這是一個無障礙設計的問題。情境性失能 (situational disability) 的框架指出,任何人都有可能遇到使其實際上處於失能狀態的情境。

例如,一位負責快速旋轉數十份橫向文件的使用者,可能會將一般的相片編輯工具視為進階使用者工具。如果 UI 阻礙了輸入,使用者就被迫放慢節奏以配合軟體的動畫速度,而不是讓軟體配合使用者的意圖。這為需要高效執行重複性任務的使用者創造了摩擦點。

技術權衡與反論點

雖然緩衝輸入通常因其可預測性而較受青睞,但技術討論中也強調了實作此行為的幾種複雜性:

過度點擊與意外輸入的風險

某些人認為,對於有運動障礙的使用者(例如帕金森氏症),忽略「過度點擊」可能比防止意外多次觸發同一動作更佳。此外,在佈局密集的應用程式中,在佈局仍在渲染時立即接受輸入,可能會導致使用者意外點擊到已移動位置的元素。

關鍵系統中輸入緩衝的危險性

在高風險環境中,緩衝可能很危險。一個被引用的例子是 Therac-25 災難,當時經驗豐富的操作員輸入指令的速度快於系統處理的速度,導致安全功能被繞過,因為系統以一種會產生危險狀態的方式緩衝了輸入。

「鎖定螢幕」悖論

緩衝並非萬靈丹。在 iPhone 的鎖定螢幕上,如果使用者輸入錯誤的密碼(例如,輸入 11234 而非 1234),系統可能會緩衝額外的數字。當使用者嘗試透過輸入正確的密碼來修正錯誤時,緩衝的數字仍然存在,導致後續嘗試失敗,直到輸入被手動清除。在這種情況下,在發生錯誤時忽略或清除輸入才是較佳的 UX。

回應式按鈕的實作策略

為了避免阻礙使用者,開發者可以採用幾種除了簡單緩衝之外的策略:

  1. 動畫中斷: 與其等待動畫結束,系統可以在收到新點擊時立即停止或加速當前動畫,將元素跳轉至下一個狀態。
  2. 立即狀態變更: 為「專家模式」移除所有動畫,讓狀態能立即變更,消除意圖與結果之間的延遲。
  3. 解耦邏輯與視覺: 確保業務邏輯(圖片的旋轉)與檢視層(旋轉的動畫)獨立處理,確保無論動畫如何追趕進度,狀態始終是正確的。

Sources