第4章-Android高級(jí)界面設(shè)計(jì)-高級(jí)控件_第1頁(yè)
第4章-Android高級(jí)界面設(shè)計(jì)-高級(jí)控件_第2頁(yè)
第4章-Android高級(jí)界面設(shè)計(jì)-高級(jí)控件_第3頁(yè)
第4章-Android高級(jí)界面設(shè)計(jì)-高級(jí)控件_第4頁(yè)
第4章-Android高級(jí)界面設(shè)計(jì)-高級(jí)控件_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Android高級(jí)界面設(shè)計(jì)第4章學(xué)習(xí)目標(biāo)掌握Android高級(jí)UI布局的使用方法(★);掌握Android高級(jí)UI組件的使用場(chǎng)景與方法(★);了解MaterialDesign設(shè)計(jì)理念了解自定義View2023/12/132第4章Android高級(jí)界面設(shè)計(jì)內(nèi)容大綱MaterialDesign設(shè)計(jì)理念A(yù)ndroid的高級(jí)布局Android的高級(jí)控件自定義View2023/12/133第4章Android高級(jí)界面設(shè)計(jì)上次課回顧什么是MaterialDesignConstraintLayout的相對(duì)布局如何設(shè)置什么是CoordinatorLayout,如何與AppBarLayout組合什么是DrawerLayout2023/12/134第4章Android高級(jí)界面設(shè)計(jì)4.3高級(jí)UI組件內(nèi)容大綱RecyclerViewCardViewFloatingActionButtonNavigationViewViewPagerToolbar2023/12/136第4章Android高級(jí)界面設(shè)計(jì)RecyclerViewRecyclerView是用于大量數(shù)據(jù)集合的可滾動(dòng)的列表容器,是ListView的替代控件優(yōu)點(diǎn):高效且靈活,高度解耦可以使用和重用有限的視圖元素可以快速更新變化的數(shù)據(jù)提供三種不同的布局管理LayoutManager提供各種動(dòng)畫(huà)及分割線(xiàn)ItemDecoration、ItemAnimator,實(shí)現(xiàn)轉(zhuǎn)場(chǎng)效果缺點(diǎn):需自定義列表分割線(xiàn)需自定義實(shí)現(xiàn)列表的點(diǎn)擊事件2023/12/137第4章Android高級(jí)界面設(shè)計(jì)RecyclerView組件數(shù)據(jù)Data:無(wú)需關(guān)心數(shù)據(jù)來(lái)源可滾動(dòng)的列表項(xiàng)集合

—RecyclerViewUI界面的布局管理—Recyclerview.LayoutManager

RecyclerView連接數(shù)據(jù)的適配器—RecyclerView.Adapter每個(gè)列表項(xiàng)布局—XMLfile顯示列表項(xiàng)的每個(gè)控件的信息—RecyclerView.ViewHolder2023/12/13第4章Android高級(jí)界面設(shè)計(jì)8RecyclerView的布局管理每種ViewGroup都有一個(gè)布局管理器,用于定位每個(gè)列表項(xiàng)的位置,可以重用對(duì)于用戶(hù)不可見(jiàn)的列表項(xiàng)內(nèi)置的布局管理器,它們都繼承自L(fǎng)ayoutManangerLinearLayoutManangerGridLayoutManangerStaggeredGridLayout2023/12/13第4章Android高級(jí)界面設(shè)計(jì)9RecyclerView的布局LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager2023/12/13第4章Android高級(jí)界面設(shè)計(jì)10RecyclerView.AdapterAdapter作為視圖和數(shù)據(jù)之間的中介,管理在數(shù)據(jù)更改時(shí)創(chuàng)建、更新、添加和刪除列表項(xiàng)ViewHolder為適配器準(zhǔn)備每個(gè)列表項(xiàng)的視圖和數(shù)據(jù),它在XML資源文件中指定布局,實(shí)現(xiàn)點(diǎn)擊功能2023/12/13第4章Android高級(jí)界面設(shè)計(jì)11RecyclerView.AdapterRecyclerView.Adapter需要重寫(xiě)以下三個(gè)方法onCreateViewHolder():此方法通過(guò)inflate()方法將列表項(xiàng)item布局編譯為View對(duì)象,返回以這個(gè)對(duì)象為參數(shù)的ViewHolder對(duì)象。onBindViewHolder():此方法主要將數(shù)據(jù)渲染到列表項(xiàng)的ViewHolder的View控件中;getItemCount():此方法類(lèi)似于ListView的BaseAdapter適配器的getCount()方法,即數(shù)據(jù)的總條目。2023/12/13第4章Android高級(jí)界面設(shè)計(jì)12item的點(diǎn)擊事件RecyclerView.Adapter本身沒(méi)有ListView的OnItemClick點(diǎn)擊事件的監(jiān)聽(tīng)器解決方案設(shè)置ViewHolder的itemView的OnClick事件監(jiān)聽(tīng),通過(guò)setTag()存儲(chǔ)itemView對(duì)象信息Adpater類(lèi)自定義內(nèi)部事件接口,定義事件處理的回調(diào)方法,參數(shù)為被點(diǎn)擊item的位置;Activity或Fragment類(lèi)實(shí)現(xiàn)或創(chuàng)建該接口的對(duì)象,實(shí)現(xiàn)回調(diào)方法;當(dāng)item被點(diǎn)擊時(shí)調(diào)用該接口的回調(diào)方法,將位置信息傳遞給回調(diào)方法實(shí)現(xiàn)RecyclerView的onItemTouchListener接口,通過(guò)GestureDetectorCompat類(lèi)進(jìn)行手勢(shì)的攔截和響應(yīng),然后GestureDetectorCompat交給實(shí)現(xiàn)了OnGestureListener接口的SimpleOnGestureListener實(shí)現(xiàn),調(diào)用邏輯相對(duì)較為復(fù)雜2023/12/13第4章Android高級(jí)界面設(shè)計(jì)13RecyclerView.Adapter的數(shù)據(jù)更新notifyDataSetChanged():通知更新adapter的記錄集notifyItemAdded(position):通知在position位置添加了記錄notifyItemChanged(position):通知修改了postion位置的記錄notifyItemRemoved(position):通知?jiǎng)h除了position位置的記錄notifyItemMoved(position):通知移動(dòng)了position位置的記錄notifyAll():通知記錄集發(fā)生了更新2023/12/13第4章Android高級(jí)界面設(shè)計(jì)14item的滑動(dòng)刪除和拖曳ItemTouchHelper:處理拖曳和滑動(dòng)刪除的實(shí)現(xiàn)類(lèi)ItemTouchHelperitemTouchHelper=newItemTouchHelper(newItemTouchHelper.Callback());itemTouchHelper.attachToRecyclerView(recyclerView);回調(diào)接口Callback的方法onMove():長(zhǎng)按拖曳的回調(diào)getMovementFlags():設(shè)置拖曳、滑動(dòng)方向onSwiped():滑動(dòng)刪除的回調(diào)2023/12/13第4章Android高級(jí)界面設(shè)計(jì)15實(shí)現(xiàn)RecyclerView實(shí)現(xiàn)步驟添加RecyclerView的依賴(lài)項(xiàng)布局添加RecyclerView給每個(gè)Item創(chuàng)建XML布局文件創(chuàng)建繼承自RecyclerView.Adapter的適配器類(lèi)創(chuàng)建繼承自RecyclerView.ViewHolder的列表項(xiàng)類(lèi)在A(yíng)ctivity的onCreate()方法中使用適配器和布局管理器創(chuàng)建RecyclerView對(duì)象案例:D0404_RecyclerView2023/12/13第4章Android高級(jí)界面設(shè)計(jì)16實(shí)現(xiàn)下拉刷新依賴(lài)庫(kù):androidx.swiperefreshlayout:swiperefreshlayout:1.1.0使用SwiperefreshLayout作為RecyclerView的父布局設(shè)置它的OnRefreshListener監(jiān)聽(tīng)器,加載數(shù)據(jù)以及刷新adapter2023/12/13第4章Android高級(jí)界面設(shè)計(jì)17RecyclerView的原理解析2023/12/13第4章Android高級(jí)界面設(shè)計(jì)18RecyclerView的四級(jí)緩存2023/12/13第4章Android高級(jí)界面設(shè)計(jì)19一級(jí)緩存:屏幕內(nèi)緩存Scrap,返回布局及內(nèi)容都有效的ViewHolder,無(wú)需onCreateViewHolder和onBindViewHolder。當(dāng)列表滑動(dòng)出屏幕時(shí),ViewHolder會(huì)被緩存在mCachedViews,其大小由mViewCacheMax決定,默認(rèn)為2,可通過(guò)RecyclerView的setItemViewCacheSize()動(dòng)態(tài)設(shè)置二級(jí)緩存:直接返回View,繼承ViewCacheExtension類(lèi)實(shí)現(xiàn)自定義緩存三級(jí)緩存:返回布局有效、內(nèi)容無(wú)效的ViewHolder,需要調(diào)用onBindViewHolder,ViewHolder首先緩存在mCachedViews中,當(dāng)超過(guò)后就添加到RecyclerViewPool中界面刷新的緩存處理2023/12/13第4章Android高級(jí)界面設(shè)計(jì)20notifyItemChange(position)被更新的Item放入ChangeScrap,不需要onCreateViewHolder,需要調(diào)用onBindViewHoldernotifyDataSetChange()0~4放入RecyclerPool,不需要onCreateViewHolder,但全部需要onBindViewHolder更新position=1的數(shù)據(jù)滾動(dòng)的緩存處理2023/12/13第4章Android高級(jí)界面設(shè)計(jì)21向上滑動(dòng)的緩存處理2023/12/13第4章Android高級(jí)界面設(shè)計(jì)22CardViewCardView是Google官方發(fā)布的MaterialDesign風(fēng)格的卡片布局控件CardView控件用于實(shí)現(xiàn)立體的卡片,提供圓角、陰影等特效CardView繼承自FrameLayout類(lèi),可以理解為帶圓角陰影和水波紋效果的FrameLayout布局常用屬性:屬性屬性含義app:cardBackgroundColor設(shè)置背景顏色app:cardCornerRadius設(shè)置圓角半徑app:cardElevation設(shè)置z軸的陰影深度app:cardMaxElevation設(shè)置z軸的最大高度值app:contentPadding設(shè)置內(nèi)容與邊距的間隔app:cardUseCompatPadding設(shè)置Android5.0及以上版本是否添加padding,默認(rèn)值為falseAndroid5.0以下默認(rèn)添加paddingapp:cardPreventConrerOverlap是否給content添加padding來(lái)阻止與圓角重疊,默認(rèn)值為true案例:D0404_RecyclerView/item_fruit_card.xmlFloatingActionButton2023/12/13第4章Android高級(jí)界面設(shè)計(jì)23FloatingActionButton是一種浮動(dòng)的圓形按鈕,具有一些獨(dú)特的動(dòng)態(tài)效果,比如變形、彈出、位移等,代表著在當(dāng)前頁(yè)面上用戶(hù)的特定操作,簡(jiǎn)稱(chēng)為FAB與普通按鈕相比,F(xiàn)AB能為應(yīng)用程序帶來(lái)更加豐富炫麗的界面效果及用戶(hù)體驗(yàn)FAB繼承自ImageView,具備ImageView的所有屬性屬性含義取值app:backgroundTint邊框背景顏色顏色值app:tint圖標(biāo)顏色,無(wú)法修改圖片顏色顏色值app:rippleColor點(diǎn)擊時(shí)的漣漪顏色顏色值app:borderWidthfab的邊框大小通常設(shè)為0dpapp:elevation默認(rèn)狀態(tài)的Z軸的陰影大小默認(rèn)值:6dpapp:pressedTranslationZ點(diǎn)擊狀態(tài)的Z軸的偏移量默認(rèn)值:12dpapp:fabSizefab的大小auto、normal(56dp)、mini(40dp)app:srcfab的圖標(biāo)符合Design設(shè)計(jì)的圖標(biāo)大小為24dpapp:layout_anchor設(shè)置錨點(diǎn)

app:layout_anchorGravity設(shè)置相對(duì)錨點(diǎn)的位置bottom、center、top等FloatingActionButton常用方法voidshow():顯示按鈕voidhide():隱藏按鈕booleanisShown():返回顯示狀態(tài)voidsetOnClickListener(OnClickListener):設(shè)置單擊監(jiān)聽(tīng)器最佳實(shí)踐按照標(biāo)準(zhǔn)設(shè)定尺寸,不要輕易修改它的樣式點(diǎn)擊和按壓的時(shí)候,加深焦點(diǎn)的顏色表示這是一個(gè)點(diǎn)擊不要過(guò)度使用FAB,應(yīng)用于當(dāng)前頁(yè)面最主要的操作,每個(gè)頁(yè)面最好只有一個(gè)FABFAB的顏色比較搶眼,最好對(duì)其設(shè)定一些積極的操作,如:創(chuàng)建、分享等,避免輕微和破壞性的操作,如:刪除等推薦只使用一個(gè)FAB,如果需要多個(gè)操作,可以點(diǎn)擊后將它展開(kāi)顯示更多操作按鈕案例:D0404_RecyclerView/item_fruit_card.xml2023/12/13第4章Android高級(jí)界面設(shè)計(jì)24NavigationView2023/12/13第4章Android高級(jí)界面設(shè)計(jì)25NavigationView是遵循MaterialDesign設(shè)計(jì)風(fēng)格的菜單導(dǎo)航類(lèi),用來(lái)規(guī)范側(cè)滑菜單的基本樣式包括頭部布局headerLayout和內(nèi)容菜單menu兩部分,配合DrawerLayout、Toolbar實(shí)現(xiàn)側(cè)滑抽屜式菜單功能NavigationView的使用和普通的側(cè)滑菜單基本相同,只需要在DrawLayout中添加即可案例:D0403_DrawerLayout2023/12/13第4章Android高級(jí)界面設(shè)計(jì)26NavigationViewNavigationView常用屬性及方法屬性名稱(chēng)含義描述app:insetForeground="@android:color/transparent"沉浸式展示app:headerLayout="@layout/nav_header"添加Header布局app:menu="@menu/nav_menu"添加標(biāo)簽Item的菜單android:layout_gravity="start"左側(cè)拉出NavigationView方法名稱(chēng)含義描述addHeaderView(Viewview)將視圖添加為導(dǎo)航菜單的標(biāo)題removeHeaderView(Viewview)刪除已添加的標(biāo)題視圖setItemBackgroundResource(intresId)設(shè)置菜單項(xiàng)的背景inflateMenu(intresId)在此導(dǎo)航視圖中添加菜單資源setItemTextColor(ColorStateListtextColor)設(shè)置菜單項(xiàng)使用的文本顏色setItemIconTintList(ColorStateListtint)設(shè)置菜單項(xiàng)使用Icon的顏色setNavigationItemSelectedListener(NavigationViewlistener)設(shè)置菜單項(xiàng)選中的監(jiān)聽(tīng)器ViewPager是Android的一個(gè)自帶動(dòng)畫(huà)效果的視圖滑動(dòng)切換組件,可以通過(guò)手勢(shì)滑動(dòng)完成View的切換,主要用于A(yíng)pp的引導(dǎo)頁(yè)或圖片輪播等。ViewPager的特性ViewPager類(lèi)繼承自ViewGroup類(lèi),它實(shí)際是一個(gè)容器,可以在其中添加其它View控件ViewPager類(lèi)需要一個(gè)Adapter適配器綁定視圖,主要使用PagerAdapter適配器類(lèi)ViewPager經(jīng)常與Fragment共同使用PagerAdapter適配器的主要方法getCount():獲取ViewPager一共有多少頁(yè)面isViewFromObject(View,Object):確定頁(yè)面View是否與instantiateItem()方法返回的key對(duì)象相關(guān)聯(lián)instantiateItem(ViewGroup,int):創(chuàng)建給定位置的頁(yè)面,適配器將創(chuàng)建的View添加到給定的容器container中destroyItem(ViewGroup,int,Object):移除給定位置的頁(yè)面2023/12/13第4章Android高級(jí)界面設(shè)計(jì)27ViewPager2023/12/13第4章Android高級(jí)界面設(shè)計(jì)28ViewPagerViewPager常用方法方法名稱(chēng)方法含義setAdapter(PagerAdapter)將ViewPager與適配器進(jìn)行綁定addOnPageChangeListener(ViewPager.OnPageChangeListener)添加Pager滑動(dòng)的監(jiān)聽(tīng)器removeOnPageChangeListener(ViewPager.OnPageChangeListener)移除監(jiān)聽(tīng)器clearOnPageChangeListener()清除監(jiān)聽(tīng)器setCurrentItem(int,boolean)控制頁(yè)面直接跳轉(zhuǎn)到指定位置的界面getCurrentItem()獲取當(dāng)前頁(yè)面的索引setPageTransformer(boolean,ViewPager.PageTransformer)設(shè)置滑動(dòng)動(dòng)畫(huà),如:翻轉(zhuǎn)、漸近漸出setOffscreenPageLimit(int)設(shè)置當(dāng)前頁(yè)面左右兩側(cè)緩存的頁(yè)面數(shù)量常用組合TabLayout+ViewPager+Fragment可以用來(lái)進(jìn)行分頁(yè)滑動(dòng)展示ToolbarToolbar是在A(yíng)ndroid5.0推出的MaterialDesign風(fēng)格的導(dǎo)航控件,它比ActionBar更具設(shè)計(jì)彈性,官方推薦使用Toolbar取代ActionBarToolbar與ActionBar不同之處在于,ActionBar獨(dú)立于布局之外,會(huì)固定在界面頂部,但Toolbar直接在布局文件中定義,可以在界面布局結(jié)構(gòu)中依照需求任意配置,可以跟著ScrollView滾動(dòng),可以與布局中的其他View交互,對(duì)滑動(dòng)事件的響應(yīng)等通過(guò)setSupportActionBar()或setActionBar()方法使用Toolbar來(lái)取代ActionBar可以定制導(dǎo)航欄圖標(biāo)、設(shè)置App的logo、設(shè)置標(biāo)題與子標(biāo)題,支持添加多個(gè)控件2023/12/13第4章Android高級(jí)界面設(shè)計(jì)29使用Toolbar使用Toolbar的基本步驟設(shè)置整個(gè)App的主題樣式為NoActionBar在A(yíng)ctivity的布局文件中添加Toolbar布局在A(yíng)ctivity類(lèi)的onCreate()方法中調(diào)用setSupportActionBar()顯示Toolbar創(chuàng)建選項(xiàng)菜單,通過(guò)showAsAction屬性設(shè)置菜單項(xiàng)的展示屬性,還可以設(shè)置菜單項(xiàng)的操作視圖對(duì)象actionViewClass或操作提供器對(duì)象actionProviderClass處理菜單項(xiàng)的點(diǎn)擊事件案例:D0405_Toolbar2023/12/13第4章Android高級(jí)界面設(shè)計(jì)30

4.4自定義View312023/12/13第4章Android高級(jí)界面設(shè)計(jì)2023/12/13第4章Android高級(jí)界面設(shè)計(jì)32自定義ViewView類(lèi)是UI的基類(lèi)可以擴(kuò)展View或View子類(lèi),自定義外觀(guān)和與用戶(hù)交互的行為自定義View有以下幾種形式類(lèi)型使用場(chǎng)景實(shí)現(xiàn)方式注意點(diǎn)繼承特定View拓展已有View的功能在原有View的基礎(chǔ)上增加功能不需要支持wrap_content和padding繼承View實(shí)現(xiàn)某種效果的自定義控件通過(guò)重寫(xiě)onDraw()實(shí)現(xiàn)繪制需要編寫(xiě)支持wrap_content和padding的代碼繼承特定ViewGroup擴(kuò)展某種布局的布局方式在原有ViewGroup的基礎(chǔ)上增加與自定義ViewGroup相比,較簡(jiǎn)單,但自由度不高繼承ViewGroup實(shí)現(xiàn)某種效果的自定義布局實(shí)現(xiàn)子View的measure、layout過(guò)程需要編寫(xiě)支持wrap_content、padding和Margin創(chuàng)建自定義View的步驟創(chuàng)建繼承自View或View子類(lèi)的自定義類(lèi)重寫(xiě)View的方法繼承View:重寫(xiě)onDraw()方法繪制View繼承View子類(lèi):重寫(xiě)行為或外觀(guān)方法在layout布局文件中使用自定義View案例:D0406_Cust

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論