Android 中開關和複選框的區別是什麼?

根據安卓交互設計指南apkbus.com 的頁面 Checkboxes allow the user to select multiple options from a set. Avoid using a single checkbox to turn an option off or on. Instead, use an on/off switch.複選框允許用戶在一個集合中做出多個選擇。不要將單個複選框當作開關來使用。

但為何安卓系統設置中仍然存在頁面中單獨使用複選框的例子。如上圖。


開關 (On/Off Switch) 出現在列表項上, 表示這個列表項還有詳細頁面 (比如設置中的 Wi-Fi, 你點擊列表項是進入 Wi-Fi 詳情, 點擊開關是開/關 Wi-Fi). 而選框 (Checkbox) 不具備此功能 (即當用戶點擊 Checkbox 或列表項都是勾選/取消勾選, 不會進入詳情頁面).

故此, 當你認為這個設置有必要加入詳情頁面的時候, 即可採用 On/Off Switch, 沒有詳情頁的話, 就用 Checkbox.

另外, 如果這個設置的說明文字繁多, 在列表中無法顯示完全的話, 建議單獨新開一個詳細頁面, 並在詳細頁面中使用開關 (比如設置中的 Android Beam 功能開關).

各個開關/設置組件的作用見此: Settings | Android Developers


看了所有人的答案,感覺都有一定的道理,但又不十分貼切的感覺。

想先說明一個觀點:大部分控制項都有現實生活中的可循的事例。

對於這個的解釋,我認為目前最 貼切的還是微軟(切換開關控制項指南)的解釋,至於谷歌的,以及其他部分答主的解答,我覺得僅僅舉例了其中 某種應用場景和傾向,不能叫詳細解釋。

先貼出來微軟的然後解釋為什麼:

  • 開關:對於用戶更改後更改立即生效的二元設置,使用切換開關。

  • 勾選:當用戶必須執行額外的步驟才能使更改生效時,使用複選框。例如,如果用戶必須單擊「提交」或「下一步」按鈕才能應用更改,則使用複選框;當用戶可以選擇多個項目時,使用複選框;

———————————————— 我是分割線——————————————————

先說開關(toggle switch),為什麼設計成這個樣子?原型是什麼?

就是現實中的隨處可見的開關。

它的定義是什麼?

指一個可以使電路開路、使電流中斷或使其流到其他電路的電子元件。

  • 第一個特性,是指對其他東西立即的影響。如燈開關影響的是燈的電路,而且是立即性的。

  • 第二個特性,是表明當前狀態。黑暗中這個小燈亮起一方面是好尋找,同時也是和另一面的區分;屋裡黑和暗也是表明狀態,但是是間接表明。(當然有一些開關是不容易明白的,比如I/O這種,如果看不到反饋, 你可能不能清晰分別當前狀態,當然切換成本低)

  • 第三個 非必須的特性:影響產生的反饋可知,或者可見。為什麼說非必須,有時候你在屋裡開外面燈你不一定能知道外面燈亮沒亮,但是不特別影響這個開關的使用。

然後我們來看wifi開啟這個事件是否符合這三個特型。

第一、是不是開啟了無線區域網這個功能?(你手機能搜到鄰居家的wifi啦)

第二、你是不是明確知道了當前的狀態。(on的表示,顏色由灰變藍)

第三、是不是聯網發現能打開網頁了。(間接反饋,可知可見)

可以看出Wi-Fi用開關控制項十分合理。

———————————————— 我是分割線——————————————————

我們接下來分析勾選,它是由對勾組成,為什麼偏偏是對勾?它的原型又是什麼?

百度了一下對勾的由來(別鄙視我百度婊,wiki上不去)。

作業批改

「√」是中國教師批閱作業時統一使用的符號之一。表示「正確」,與之相對的符號是「×」,叫做「叉」,表示錯誤。

在日本批改試卷時「√」意思為解答有誤請再度檢查。

文告

最典型的如判決書。古代執行死刑,司法程序規定須由刑部呈請皇帝「勾決」。

榜示

如錄取名單。張榜公布的名單末尾,最後一名下勾紅,表示名單正確無誤,並且到此結束。榜上最後一名以前俗稱「坐紅椅子」。

賬冊結算

過去商號記流水賬,除了每日每月結算之外,五月、八月、春節三大節盤賬結算,算賬的人就在結清之處打「紅挑兒」,就是紅色的「√」,以示賬目已經核查清楚、正確無誤。

由上面來看,對勾是從古至今一直沿用到現在的一個符號。

代表兩個特性:正確、完成

顯然我們的勾選,不是完成的意思,更像是正確的意思。

在此我引申為,認可和選擇。(為何有選擇的意思?因為你不認可別的就是認為別的錯誤啦~!那這個行為就是選擇)

現實中的一個原型就是去小飯館的點菜菜單(當然還有其他類型的list,懂就好)。

它在這裡面的特性是什麼?

第一個特性是認可。我認可了這道菜。

第二個特性是非時效性,草稿性質。我選了紅燒肉,我還可以劃掉,我還可以再選一次紅燒肉。反正待會給服務員。記住這個特性,這個特性很重要,即代表勾選之後並不能立即讓廚房開始做。需要提交給服務員。

再看如果把WIFI開啟用勾選的特性來表達,應該是怎麼樣?

CPU:

你為什麼不直接去找WIFI !!

你為什麼不直接去找WIFI !!

你為什麼不直接去找WIFI !!

舉這個例子大家明白了開關的時效性,以及勾選的非時效性的意思了吧?

所以我們再來看微軟的解釋:

  • 開關:對於用戶更改後更改立即生效的二元設置,使用切換開關。

  • 勾選:當用戶必須執行額外的步驟才能使更改生效時,使用複選框。例如,如果用戶必須單擊「提交」或「下一步」按鈕才能應用更改,則使用複選框;

其實還是很恰當和嚴謹的。

微軟對於開關的解釋,確實沒說第三條非必須特性(可見的間接反饋),但是我們在生活中和設計中最好可以多做一些,畢竟不是壞事。你屋裡開外面的燈,你能屋裡看到燈泡總比看不到好一些。

微軟對於勾選的解釋,勾選使用在表單中是正確的,大部分使用場景即表單中的勾選。

結論:我們可以簡單的記為 表單用勾選,實效用開關!

———————————————— 我是彩蛋分割線——————————————————

下面內容如果沒有充分理解上面的意思請不要輕易看下去。。。

恩,大部分情況這樣是上面講的那些比較容易理解的簡記規則。

但是別忘了這個東西原則上都是可以行得通的,即原則上並不是兩個互相使用就是行不通的。比如我就讓CPU幫我開wifi不行嗎?所以不要過度糾結對錯,最好明白99%的適用性即可。進一步引申的話,就是UX部門不存在程序員也是可以跑通程序的。說多啦,下面看栗子。

舉個栗子,誰說表單不能用開關了?有誰說表單不能有實效性的控制項了?

下圖就是一個表單用開關很好的例子,大家可以想一下為什麼這裡用開關好一些。答案在圖後面。

開關的定義是立即生效,這裡可以進一步理解為影響,這裡過戶費的開啟與關閉可以理解為影響自己上面填寫價格的行為(類似計算器)。另外一個更主要原因微軟的規範里提到開關有時候比勾選更明確表明狀態,比如這個包含二字,就比對勾好理解多多多。傳送門:切換開關控制項指南結束,歡迎轉載~~~


此答案的修正在這裡:http://www.zhihu.com/question/22591724/answer/21900897

我一直覺得開關和 checkbox 的應用場景很難用語言描述清楚,但是實際用哪個更好在每個場景之下都是比較顯而易見的。

我認為 on/off switch 就好比我們日常生活中電器的開關一樣,一般用於某項功能(通常是一個應用的唯一功能)的開關,打開這個開關後,應用會開始進行某種持續性的「工作」。Checkbox 應該用於應用的選項中某項特性(眾多特性中的一個),勾選後只是代表「啟用」或「開啟」的狀態,但不會有給人「靜止」到「工作」的那種明顯的感覺。

補充一個例子吧,應該用 checkbox 還是 on/off switch,不用多說吧,這可是同一個開發者做的應用哦


我也遇到了同樣的困惑。在上面答案的基礎上補充一下微軟Windows 8 UX design guidelin中對此問題的答案(http://msdn.microsoft.com/en-us/library/windows/apps/hh700393.aspx)。主要區別在於checkbox用於描述狀態而Switch用於激發動作。比如在一個表單中,選中的checkbox不會立即生效,或激發一個動作,而是會等到提交表單時再起作用。開關則會立即執行相應的動作,正如王成上面描述的那樣。另一個區別是checkbox支持多選。

我覺得這個問題沒有截然對錯的答案,上面的原則也和約定俗成有矛盾。比如登錄界面常提供的「顯示密碼」選項一般都用CheckBox,按上面的原則來說應該用switch,因為這是一個單一的、立即生效的選項。但如果真這樣做,界面看上去會很彆扭。所以上面大家講的指導原則應該傾向性的,實際使用中可以有一定的靈活性。


其實沒有。

或者應該這樣說,(原生)Android在 3.x 前是沒有 switch button 的,對於觸摸屏操作,switch button 的表現形式更符合,所以 Android 後來也加上了,但是作為歷史遺留問題的 checkbox 怎麼辦?只能在 design guide 里給予一些指示好區分兩者的用途,但我覺得,checkbox 除非是作用於 類似 HTC chacha 以及以前帶有全鍵盤或者小奶頭導航鍵的機型,純觸摸操作的話,和 switch button 在 「語義」 上真的沒有什麼很大的區別。


Material Design裡面終於給出了多選框和開關應用場景的區別:

Switches - Components

If you have multiple on/off options appearing in a list, checkboxes are a good way to preserve space.

If you have a single on/off option, avoid using a checkbox and use an on/off switch instead.

如果需要在一個列表中出現多個 on/off 選項,複選框是一種節省空間的好方式。

如果只有一個 on/off 選擇,不要使用複選框,而應該替換成 on/off 開關。

ps:其實之前Android Design裡面也是寫著

Avoid using a single checkbox to turn an option off or on. Instead, use an on/off switch.

不要將單個複選框當作開關來使用。

也就是說,多個複選框時可以當作開關使用的www,然而那是並沒有被我這麼理解OAQ

至於為什麼系統設置界面也是把單個複選框當作開關來使用了。。。嘛,Google違反Android Design和/或Material Deisgn的例子數不勝數ORZ


比如設置交叉搜索條件, checkbox比swich合適。


其實兩個表達的意思是一樣的,是否啟用這一功能

那為啥要設計成兩個東西呢?

因為和ui設計美觀程度和所表達場景不同決定的


個人感覺,這兩種都是有現實意義的。

開關顧名思義,打開後可實現某種功能,關閉後恢復或切換到另一種狀態。

複選按照理解,允許用戶選擇零個選項,至少提供兩個選項,選項之間屬於並列關係。


推薦閱讀:

Android新手看什麼書?
如何看待使用 native 開發 Android/iOS 跨平台應用?
(2013.12)最近需要購入一台筆記本,有高手給點好建議么?
作為一個個人android開發者,下面哪些能力是比較重要的?
Android中,在子線程使用Toast會報錯?

TAG:Android應用 | Android開發 | 交互設計 | Android |