Android - Snackbar vs Toast - การใช้งานและความแตกต่าง


103

เราใช้เพียงแค่ขนมปังปิ้งในแอปพลิเคชันของเราจนถึงตอนนี้และในขณะที่เรากำลังวางแผนที่จะใช้คุณสมบัติใหม่บางอย่างจากไลบรารีการออกแบบการสนับสนุนฉันสงสัยว่าการใช้งานที่แนะนำสำหรับ Snackbar กับขนมปังปิ้งคืออะไร

ฉันได้อ่านเอกสารสแน็คบาร์ของ Google

สแน็คบาร์ให้ข้อเสนอแนะเล็กน้อยเกี่ยวกับการทำงานในป๊อปอัปขนาดเล็กที่ฐานของหน้าจอบนอุปกรณ์เคลื่อนที่และที่ด้านล่างซ้ายบนเดสก์ท็อป องค์ประกอบเหล่านี้อยู่เหนือองค์ประกอบต่างๆบนหน้าจอรวมถึง FAB

และขนมปังปิ้ง

Android ยังมีขนมปังรูปทรงแคปซูลซึ่งส่วนใหญ่ใช้สำหรับการส่งข้อความของระบบ ขนมปังปิ้งคล้ายกับสแน็คบาร์ แต่ไม่มีการทำงานและไม่สามารถเลื่อนออกจากหน้าจอได้

ฉันเข้าใจสิ่งที่พวกเขาทำ แต่ฉันค่อนข้างสับสนว่าจะใช้อะไรดี หมายความว่า:

  • หากฉันไม่ต้องการการโต้ตอบกับผู้ใช้ฉันจะใช้ขนมปังปิ้ง?
  • "ระบบส่งข้อความ" หมายถึงอะไร? ใช้กับการแสดงข้อมูลเมื่อมีสิ่งสำคัญเกิดขึ้นระหว่างแอปของฉันกับระบบ Android หรือไม่
  • สิ่งที่ฉันชอบคือคุณสมบัติการปัดออกจากหน้าจอนั่นเป็นเหตุผลที่จะเริ่มเปลี่ยนขนมปังปิ้งด้วยสแน็คบาร์หรือไม่? (นี่เป็นคำถามตามความคิดเห็นเล็กน้อย)

ลิงก์นี้ใช้งานไม่ได้แล้ว บางทีควรใช้material.io/guidelines/components/snackbars-toasts.html ?
Vadim Kotov

คำตอบ:


109

หากฉันไม่ต้องการการโต้ตอบกับผู้ใช้ฉันจะใช้ขนมปังปิ้ง?

คุณยังสามารถใช้ Snackbar ได้ ไม่บังคับให้ดำเนินการกับ Snackbar

"ระบบส่งข้อความ" หมายถึงอะไร? ใช้กับการแสดงข้อมูลเมื่อมีสิ่งสำคัญเกิดขึ้นระหว่างแอปของฉันกับระบบ Android หรือไม่

ฉันเชื่อว่านี่หมายความว่าจะต้องใช้ขนมปังปิ้งหากมีข้อความบางอย่างเกี่ยวกับระบบ ทั้ง Android โดยรวมหรือบริการพื้นหลังบางอย่างที่คุณอาจใช้งานอยู่ เช่นText-To-Speech is not installed.หรือNo Email client found.

สิ่งที่ฉันชอบคือคุณสมบัติการปัดออกจากหน้าจอนั่นเป็นเหตุผลที่จะเริ่มเปลี่ยนขนมปังปิ้งด้วย Snackbar หรือไม่? (นี่เป็นคำถามตามความคิดเห็นเล็กน้อย)

นั่นคือเหตุผลหนึ่ง แต่ยังมีจุดบวกอื่น ๆ อีกมากมาย ตัวอย่างเช่นขนมปังปิ้งของคุณยังคงอยู่บนหน้าจอแม้ว่ากิจกรรมจะเสร็จสิ้น สแน็คบาร์ไม่ได้ จะมีความสับสนน้อยลงหากขนมปังไม่ป๊อปอัป (หรือโผล่ขึ้นมาเรื่อย ๆ ในกรณีที่มีการสร้างขนมปังหลายชิ้นตามลำดับ) นานหลังจากออกจากแอป สิ่งนี้จะไม่เกิดขึ้นกับ Snackbar

มากกว่าทุกสิ่ง: ฉันแนะนำว่าถ้าคุณกำลังคิดคุณควรเปลี่ยน SnackBars ดูดีกว่าขนมปังปิ้ง


18
ไชโยประเด็นที่ Snackbar ยังมีชีวิตอยู่ในขณะที่คุณทำกิจกรรมนั้นมีประโยชน์จริงๆ
Jakub Holovsky

9
ฉันขอเพิ่มว่า Toasts เป็นที่ต้องการสำหรับข้อความที่อ้างถึงแอปโดยรวมนอกเหนือจากข้อความระบบในขณะที่ Snackbars เป็นที่ต้องการสำหรับข้อความที่อ้างถึงกิจกรรมปัจจุบัน ตัวอย่างเช่นหากแอปของคุณตรวจหาการอัปเดตเมื่อเปิดตัวควรใช้ขนมปังปิ้งสำหรับข้อความผลลัพธ์ หากแอปของคุณมีรายการที่สามารถลบได้แนะนำให้แสดงข้อความตอบกลับที่ถูกลบเป็นสแน็คบาร์พร้อมปุ่มเลิกทำ
Subaru Tashiro

10
สิ่งหนึ่งที่ควรทราบก็คือขนมปังปิ้งจะไม่แสดงเมื่อปิดการแจ้งเตือน
Horatio

ความแตกต่างที่สำคัญก็คือมีเพียง Snackbar เพียงอันเดียวเท่านั้นที่แสดงได้ตลอดเวลาซึ่งแตกต่างจาก Toast - คุณสามารถมี Toasts หลายชิ้นแสดงอยู่ด้านบนซึ่งอาจสร้างความรำคาญให้กับผู้ใช้โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงความจริงที่ว่าพวกเขาไม่สามารถลบออกได้ รูด.
Firzen

47

ฉันอยากจะเพิ่มการเปรียบเทียบเล็กน้อยระหว่างขนมปังปิ้งและสแน็คบาร์ ในความคิดของฉันหากคุณตั้งใจที่จะนำเสนอคำเตือนหรือข้อมูลที่จำเป็นต้องมีการโต้ตอบ / รับทราบของผู้ใช้คุณควรใช้สแน็กบาร์ หากเป็นเพียงข้อความแสดงข้อมูลที่ไม่จำเป็นต้องให้ผู้ใช้รับทราบคุณสามารถใช้ขนมปังปิ้งได้

+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+
| # |                                Toast                                 |                                 Snackbar                                 |
+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+
| 1 | Cant be dismissed by swiping                                        | Can dismiss by swiping                                                   |
| 2 | Activity not required (Can show in android home or above other apps) | Can show inside an activity of your app                                  |
| 3 | Cant handle user input                                              | Can handle user input                                                    |
| 4 | Good for showing info messages to user                               | Good for showing warning/info type messages to user that needs attention |
+---+----------------------------------------------------------------------+--------------------------------------------------------------------------+

26

ขนมปังปิ้ง:

  1. เพิ่ม Toast ใน API ระดับ 1
  2. โดยทั่วไปไม่จำเป็นต้องมีกิจกรรม (สามารถแสดงบนบ้านของ Android หรือแม้แต่เหนือแอปอื่น ๆ )
  3. ไม่สามารถดำเนินการตามการป้อนข้อมูลของผู้ใช้
  4. ไม่สามารถปิดได้โดยการปัด
  5. ไม่สามารถจัดการอินพุตของผู้ใช้เช่น Swipe, Click เป็นต้น
  6. เหมาะสำหรับแสดงข้อความข้อมูลให้กับผู้ใช้

สแน็คบาร์:

  1. เพิ่ม SnackBar ใน API ระดับ 23
  2. สามารถแสดงได้ภายในกิจกรรมของแอปพลิเคชัน
  3. สามารถดำเนินการ
  4. สามารถปิดได้โดยการปัด
  5. สามารถจัดการอินพุตของผู้ใช้ได้
  6. เหมาะสำหรับแสดงข้อความเตือน / ประเภทข้อมูลให้กับผู้ใช้ที่ต้องการความสนใจ

การใช้ SnackBar และ Toast:

สแน็คบาร์:

SnackBar สามารถใช้ในพื้นที่ที่จำเป็นต้องแสดงข้อความป๊อปอัพพร้อมกับตัวเลือกในการดำเนินการ ตัวอย่างเช่นในแอปพลิเคชัน GMail เมื่อคุณลบเมล SnackBar ด่วนจะแสดงที่ด้านล่างพร้อมข้อความ '1 ที่ถูกลบ' พร้อมปุ่มการดำเนินการ 'เลิกทำ' เมื่อกดปุ่มการดำเนินการ "เลิกทำ" อีเมลที่ถูกลบจะถูกเรียกคืน

ขนมปังปิ้ง:

สามารถใช้ Toast ในพื้นที่ที่ต้องแสดงข้อความระบบ

ตัวอย่างเช่น:

เมื่อแอปของคุณพยายามดาวน์โหลด JSON จากเซิร์ฟเวอร์ระยะไกล แต่ล้มเหลวเนื่องจากเซิร์ฟเวอร์หมดเวลาหรือไม่พบทรัพยากรคุณเพียงแค่ต้องแสดงข้อความแสดงข้อผิดพลาดที่ระบุว่า 'เกิดข้อผิดพลาด' แต่เข้าใจว่าข้อความ Toast ไม่สามารถปิดได้โดยการปัด หากคุณยังต้องการมีความสามารถในการปิดมันในแอพของคุณให้ไปที่ SnackBar


13

ตามเอกสารอย่างเป็นทางการที่ภาพรวมข้อความป๊อปอัป :

หมายเหตุ: Snackbarระดับแทนที่ขนมปังปิ้ง แม้ว่าในขณะนี้ToastยังคงรองรับSnackbarเป็นวิธีที่แนะนำในการแสดงข้อความสั้น ๆ และชั่วคราวให้กับผู้ใช้

และ (การออกแบบวัสดุ) เอกสารของสแน็คบาร์ :

แนวคิดที่เกี่ยวข้อง: Android ยังจัดเตรียมคลาสToastด้วย API ที่คล้ายกันซึ่งสามารถใช้สำหรับการแสดงการแจ้งเตือนระดับระบบ โดยทั่วไปสแน็คบาร์เป็นกลไกที่ต้องการสำหรับการแสดงข้อความตอบกลับให้กับผู้ใช้เนื่องจากสามารถแสดงในบริบทของ UI ที่มีการดำเนินการเกิดขึ้น จองToastในกรณีที่ไม่สามารถทำได้


2

ข้อกำหนดการออกแบบวัสดุของ Google บอกว่าสามารถมีแถบสแน็คบาร์ได้โดยไม่ต้องดำเนินการใด ๆ พวกเขาได้ให้ตัวอย่างว่า Snackbar ควรมีลักษณะอย่างไรหากแสดงเพียงสตริงเดียว ฉันจะถือว่า "การรับส่งข้อความระบบ" หมายถึงเหตุการณ์ของอุปกรณ์เช่นการเชื่อมต่อเครือข่ายขาดหายไปในขณะที่การเก็บอีเมลเป็นการดำเนินการเฉพาะของ Gmail เป็นต้น

เพื่อความสอดคล้องคุณควรเลือก Toast หรือ Snackbar และนำไปใช้กับแอปของคุณ


1
ลิงก์นั้นถูกย้าย: material.io/design/components/snackbars.html
Antonio Vinicius Menezes Medei

1

คำตอบสั้น ๆ คือ 2 วิธีในการสื่อสารสิ่งต่าง ๆ กับผู้ใช้ที่เกิดขึ้นในพื้นหลังและคุณสามารถเพิ่มหนึ่งในนั้นได้ทั้งสองอย่างก็ใช้ได้ ตรวจสอบให้แน่ใจว่าคุณใช้อันเดียวกันและไม่ได้สลับไปมา

คำตอบยาว:

  • ไม่นั่นหมายความว่าหากคุณต้องการดำเนินการบางอย่างคุณต้องใช้ Snackbar คุณยังสามารถใช้แถบสแน็คบาร์สำหรับข้อความเท่านั้น (เช่น "อัปโหลดเสร็จแล้ว")
  • โดย "ระบบ" ไม่ได้หมายถึงระบบ Android เท่านั้น ตัวอย่างเช่นหากมีปัญหาในการแยกวิเคราะห์ json ขณะรับข้อมูลจากเซิร์ฟเวอร์ของคุณคุณยังสามารถใช้ขนมปังปิ้งเพื่อให้ผู้ใช้มีปัญหาในขณะสื่อสารกับเซิร์ฟเวอร์
  • หากคุณจำเป็นต้องปัดสิ่งนี้ออกไปนั่นเป็นเหตุผลที่ต้องเลือก Snackbar

1

ทีมออกแบบของเรากำลังพิจารณาการใช้ขนมปังปิ้งหรือสแน็คบาร์ด้วยเช่นกัน เราได้ข้อสรุปว่าแอปควรใช้สแน็คบาร์โดยมีความยืดหยุ่น

ควรใช้ขนมปังปิ้งก็ต่อเมื่อเราต้องการข้อความข้อมูลสั้น ๆ แบบต่อเนื่องที่ยังคงมีเหตุผลในหน้าจอต่างๆ


1

ความแตกต่างระหว่าง Toast และ Snackbar Android

  • ข้อความขนมปังปิ้งสามารถปรับแต่งและพิมพ์ได้ทุกที่บนหน้าจอ แต่แถบสแน็คบาร์จะแสดงที่ด้านล่างของหน้าจอเท่านั้น
  • ข้อความ Toast ไม่มีปุ่มการดำเนินการ แต่ Snackbar อาจมีปุ่มการทำงานเป็นตัวเลือก
  • ไม่สามารถปิดข้อความ Toast ได้จนกว่าจะสิ้นสุดการ จำกัด เวลา แต่ Snackbar สามารถเลื่อนออกได้ก่อนเวลาที่กำหนด
  • คุณสามารถกำหนดระยะเวลาที่จะแสดงข้อความโดยใช้ค่าที่ต่างกันสามค่านี้
    Snackbar.LENGTH_LONG
    Snackbar.LENGTH_SHORT
    Snackbar.LENGTH_INDEFINITE

การใช้งาน

ขนมปังปิ้ง

Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

สแน็คบาร์

Snackbar snackbar = Snackbar.make(view,"This is Simple Snackbar",Snackbar.LENGTH_SHORT);
snackbar.show();

0

Android ยังมีขนมปังรูปทรงแคปซูลซึ่งส่วนใหญ่ใช้สำหรับการส่งข้อความของระบบ

ฉันคิดว่าด้วย "การส่งข้อความของระบบ" พวกเขายังอ้างถึงข้อเท็จจริงที่ว่าขนมปังจะแสดงในช่วงเวลาหนึ่งและไม่สามารถปิดได้แม้ว่าผู้ใช้จะนำทางไปยังกิจกรรมต่างๆและแม้ว่าแอปจะถูกย้ายไปอยู่เบื้องหลังก็ตาม

ฉันคิดว่าเป็นข้อดีของสแน็คบาร์ในการ จำกัด ขอบเขตของกิจกรรมและสามารถยกเลิกได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.