




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第詳解Android如何實現(xiàn)好的彈層體驗效果目錄前言彈層的形式選擇中間彈層左右抽屜彈層頂部彈層底部彈層總結
前言
當前App的設計趨勢越來越希望給用戶沉浸式體驗,這種設計會讓用戶盡量停留在當前的界面,而不需要太多的跳轉,這就需要引入彈層。比如,抖音引入購物功能后,就實現(xiàn)了在觀看視頻界面可以通過彈層完成加入購物車、下單操作,無需離開當前的視頻界面。本篇我們就來講講彈層這塊需要注意哪些用戶體驗。
彈層的形式選擇
彈層從形式上來說有中間彈層、左側彈層、右側彈層、底部彈層和頂部彈層,如下圖所示。
移動端經過這么多年的發(fā)展,不同的彈層的應用場景相對來說比較固定。因此,在選擇的時候,建議遵循現(xiàn)有的習慣來選擇合適的彈層。
中間彈層:通常用于詢問對話框形式,例如退出登錄、刪除操作的二次確認。左側彈層:通常用于抽屜式的個人中心或設置界面,這種一般是底部欄無法放下個人中心類界面的時候一個不錯的選擇。右側彈層:通常用于做數(shù)據(jù)篩選,典型的場景是購物類應用的精準篩選。底部彈層:這種非常常見,如我們提到的目前抖音的商品購買,還有像單選、多選、級聯(lián)選擇、時間選擇等等。頂部彈層:頂部彈層一般也是用于篩選,比較常見的是列表表頭的篩選,或者導航欄帶類似PC端的下拉類的篩選。
這里需要提兩個比較通用的原則:
彈層出現(xiàn)的位置應當盡量靠近觸發(fā)交互的位置,比如點擊導航欄左上角的按鈕通常會從左側彈出。
蒙層的顏色要根據(jù)實際情況來定,一般都是黑色半透明的蒙層,但是主要面對是為了讓用戶能夠看清蒙層底下的內容,比如如果是在視頻播放頁面疊加蒙層就會影響用戶體驗了。
接下來我們依次來用Flutter實現(xiàn)上述的5類彈層,并講講一些體驗要點。
中間彈層
中間彈層在Flutter中可以通過showDialog和ShowCupertinoDialog(iOS風格)實現(xiàn),下面是示例代碼。
showDialog(
context:context,
barrierDismissible:false,
builder:(_)=AlertDialog(
title:constText('操作提醒'),
content:constText('確認要進行此操作嗎?'),
actionsAlignment:MainAxisAlignment.end,
actions:[
TextButton(
onPressed:(){
Navigator.of(context).pop();
child:constText('取消'),
TextButton(
onPressed:(){
Navigator.of(context).pop();
child:constText(
'刪除',
style:TextStyle(color:Colors.red),
);
這里有一個體驗要素是是否支持點擊底部的黑色蒙層隱藏彈層。通常來說,如果是二次確認類操作,建議不要點擊蒙層隱藏。因為用戶的操作目的性非常明確,如果不小心誤觸的話,用戶還得再點擊一次。這個時候需要設置barrierDismissible為false。
左右抽屜彈層
在Flutter的Scaffold中提供了兩個屬性來設置左側抽屜和右側抽屜彈層,對應的參數(shù)分別是drawer和endDrawer。我們來看看具體的代碼。
Widgetbuild(BuildContextcontext){
returnScaffold(
appBar:AppBar(
title:constText('左右抽屜彈層'),
backgroundColor:Colors.red[800],
leading:Builder(builder:(context){
returnIconButton(
onPressed:(){
Scaffold.of(context).openDrawer();
icon:constIcon(
Icons.menu,
actions:[
Builder(builder:(context){
returnIconButton(
onPressed:(){
Scaffold.of(context).openEndDrawer();
icon:constIcon(
Icons.filter_list_alt,
drawer:Container(
width:MediaQuery.of(context).size.width*3/4,
color:Colors.white,
child:Center(
child:TextButton(
onPressed:(){
Navigator.of(context).pop();
child:constText('收起'),
endDrawer:Container(
width:MediaQuery.of(context).size.width*3/4,
color:Colors.blue,
child:Center(
child:TextButton(
onPressed:(){
Navigator.of(context).pop();
child:constText(
'收起',
style:TextStyle(
color:Colors.white,
body:constCenter(child:Text('抽屜示例')),
}
實現(xiàn)的效果如下圖所示。實用左側或右側彈層需注意三個體驗要素:
寬度:建議設置為屏幕寬度的3/4,這種寬度抽屜的顯示內容足夠寬,而底下的蒙層點擊區(qū)域寬度也比較合適點擊退出彈層。頂部內容區(qū)域需要注意留出一定的頭部位置(比如左側通常會放頭像+昵稱),一個是美觀,一個是要避免顯示內容碰到了手機屏幕的挖孔位置。一般側邊彈層點擊蒙層都會支持收起,所以建議保留這個操作習慣,而不是非得點彈層的某個按鈕才關閉彈層。
頂部彈層
頂部彈層在Flutter中需要自己去實現(xiàn),一個比較好的方式是使用showGeneralDialog來實現(xiàn)。這里有個技巧是實用Column組件可以讓內容區(qū)靠頂部,然后利用動畫實現(xiàn)從上往下滑的彈出效果。下面是實現(xiàn)代碼,實際通過這種方式可以實現(xiàn)底部,左側,右側和中間的彈層。
showGeneralDialog(
context:context,
barrierDismissible:true,
transitionDuration:constDuration(milliseconds:300),
barrierLabel:MaterialLocalizations.of(context).dialogLabel,
barrierColor:Colors.black.withOpacity(0.5),
pageBuilder:(context,_,__){
returnColumn(
mainAxisAlignment:MainAxisAlignment.start,
children:Widget[
Container(
width:MediaQuery.of(context).size.width,
color:Colors.white,
child:Card(
margin:constEdgeInsets.all(0),
child:ListView(
shrinkWrap:true,
children:Widget[
ListTile(
title:constText('選項1'),
onTap:()=Navigator.of(context).pop('1'),
ListTile(
title:constText('選項2'),
onTap:()=Navigator.of(context).pop('2'),
ListTile(
title:constText('選項3'),
onTap:()=Navigator.of(context).pop('3'),
transitionBuilder:
(context,animation,secondaryAnimation,child){
returnSlideTransition(
position:CurvedAnimation(
parent:animation,
curve:Curves.easeOut,
).drive(TweenOffset(
begin:constOffset(0,-1.0),
end:Offset.zero,
child:child,
);
效果如下所示,頂部彈層彈出的方向最好是從上到下,如果是從下到上的話移動距離過長,會覺得很突兀。
底部彈層
底部彈層和頂部彈層其實是類似的,而且更為常見一點。之前在文章底部彈窗ModelBottomSheet詳解有過介紹,這里就不再講具體實現(xiàn)了。說一下底部彈層的幾個體驗要點:
彈出方向從底部往上彈出,動畫時長建議200-300毫秒;如果是多選這種需要二次確認操作的,需要在頂部提供確認和取消按鈕;適用選項不太多的場景,如果選擇的內容很多建議單獨跳轉到選擇頁面完成,并且支持模糊搜索匹配選項;需要區(qū)分選中項,讓用戶知道之前的選項;如果涉及到網(wǎng)絡請求,建議是在網(wǎng)絡請求完成后再關
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年心理服務方案模板
- 健康醫(yī)療產業(yè)遠程醫(yī)療服務體系建設方案
- 科技金融專業(yè)服務方案
- 寵物貓癬病的診斷與治療
- 【部編版】三年級語文下冊第5課《守株待兔》精美課件
- 湖南省永州祁陽縣聯(lián)考2025屆七下生物期末考試模擬試題含解析
- 2025年廣西河池天峨縣旅游投資開發(fā)有限責任公司招聘筆試參考題庫含答案解析
- 2025年山東濰坊市城市建設發(fā)展投資集團有限公司招聘筆試參考題庫含答案解析
- 2025年浙江溫州市龍灣區(qū)新農村建設投資有限公司招聘筆試參考題庫含答案解析
- 2025年貴州銅仁萬山區(qū)翠豐實業(yè)集團有限責任公司招聘筆試參考題庫含答案解析
- 2024年度合資成立新能源研發(fā)分公司合作協(xié)議范本3篇
- 第17課《第二次世界大戰(zhàn)》中職高一下學期高教版(2023)世界歷史全一冊
- 無人機就業(yè)規(guī)劃
- 【MOOC】意在象中-中國古典詩詞鑒賞-北京師范大學 中國大學慕課MOOC答案
- 項目聯(lián)合體協(xié)議(標前)
- 智能工廠數(shù)字化交付 第2部分:設計交付 征求意見稿
- 護理查房(抑郁發(fā)作)
- 2023年新高考天津數(shù)學高考真題(解析版)
- 小學英語滬教版單詞表(測試版)
- 博物館物業(yè)服務投標方案(技術方案)
- 2024年高級電工職業(yè)鑒定考試題庫-下(多選、判斷題)
評論
0/150
提交評論