Material Design 實戰
- 一、Material Design初識
- 二、滑動選單
- 1.DrawerLayout
- 2.NavigationView
- 三、Snackbar和Floating Action Button
- 1.Floating Action Button
- 2.Snackbar
- 四、卡片式布局
- 1.MaterialCardView的基本用法
- 2.Glide基本用法
- 五、下拉重繪
- 六、可折疊標題欄
- 七、Kotlin:簡化Toast和Snackbar
- 八、Git高階用法
一、Material Design初識
主要是google提出的一種設計應用的規范,并且為了方便開發者,Google將一系列設計好的組件進行了一些比較好的封裝
使得我們普通的開發者也能設計出較為美觀的界面,只要引入Material庫就可以使用那些組件了
二、滑動選單
1.DrawerLayout
在此布局里面放兩個控制元件,也可以進行嵌套布局,實作更加漂亮的界面
第一個子控制元件主要顯示主螢屏的內容
第二個子控制元件主要顯示滑動選單的內容
這里面有個layout_gravity比較有趣,根據各種地域的語言習慣,設定start屬性
從左到右的閱讀習慣的語言滑動選單在左邊,反之則相反(人性化操作)
2.NavigationView
CircleImageView可以輕松實作圖形圓形化
實作NavigationView之前需要準備兩個xml檔案
一個是menu和另一個headerLayout
menu用于顯示NavigationView中顯示具體的選單項
headerLayout用于顯示頭部布局
三、Snackbar和Floating Action Button
1.Floating Action Button
此控制元件提供了一種立體的設計感,此外與其他Button控制元件沒有什么區別,不過這里google加了一些更加逼真的特效
比如可以設定高度使得控制元件有一些陰影
2.Snackbar
與Toast有點像,可以完全代替Toast,不過也有一些自己的特有的東西
在提示的時候允許加入一個可互動的按鈕,比如在用戶誤操作時提供一個撤銷操作的按鈕
這里提供了一個在比如按鈕被提示遮擋時的一個自動偏移的操作的布局CoordinatorLayout
可以對子控制元件的各種回應,做出一些比較合理的調整
四、卡片式布局
1.MaterialCardView的基本用法
本質也是一個FrameLayout,提供了圓角和陰影,使得UI界面更具立體感
這里面有個scaleType屬性需要注意一下,可以指定圖片的縮放模式,使用centerCrop屬性使得圖片
保持原有的比例充滿ImageView,超過螢屏的部分裁掉
2.Glide基本用法
舉個栗子就可以了
Glide.with(context).load(fruit.imageId).into(holder.fruitImage)
//第一個引數時背景關系,第二個引數可以是圖片的本地的路徑,也可以是一個資源Id,也可以是圖片的URL地址
//into方法就是加載的圖片在哪個ImageView上
這里有一個比較好用的AppBarLayout,配合CoordinatorLayout可以實作一些比較復雜的操作,例如
app:layout_behavior
app:layout_scrollFlags
這里就不詳細說明了,用到的時候可以具體進行學習
五、下拉重繪
SwipeRefreshLayout 為實作下拉重繪的核心類,只要把想要實作下拉重繪的控制元件放在里面即可實作下來重繪,一般是
將一些UI更新的操作放進去,可以用runOnUiThread進行操作
六、可折疊標題欄
這部分可以自由定制,原本的標題欄比較枯燥,可以利用material庫設計一個更好的
需要提前做好布局的架構,不然這部分可以讓你力不從心
以下是需要注意的幾點
1.設計時使用到了CollapsingToolbarLayout,AppbarLayout,CoordinatorLayout
不過由于這些布局之間有一定的聯系,故都不能單獨使用
CollapsingToolbarLayout只能當AppbarLayout的子布局使用
AppBarlayout又必須是CoordinatorLayout的子布局
2.將背景圖和系統狀態欄融合的時候需要注意
使用android:fitsSystemWindows屬性即可
不過需要將imageView的所有父布局設定此屬性才可以
而且需要設定主題為透明,這樣背景圖才有效
七、Kotlin:簡化Toast和Snackbar
這里對以前所學的kotlin的高級用法做了一個實戰,解決了一些開發程序的一些痛點
舉個栗子即可
Toast
fun String.showToast(context: Context,duration: Int = Toast.LENGTH_SHORT){
Toast.makeText(context,this,duration).show()
}
fun Int.showToast(context: Context,duration: Int = Toast.LENGTH_SHORT){
Toast.makeText(context,this,duration).show()
}
//這里面簡化了Toast的操作,使用字串和資源id的Toast,用到了默認值這一用法
//也運用了kotlin里面的擴展函式的用法使得我們更加方便地進行撰寫
"hhhh".showToast(context)
R.id.hhh.showToast(context)
Snackbar
fun View.showSnackbar(text:String,actionText:String ?= null,duration: Int = Snackbar.LENGTH_SHORT,
block:(()->Unit)?= null){
val snackbar = Snackbar.make(this,text,duration)
if (actionText != null && block != null){
snackbar.setAction(actionText){
block()
}
}
snackbar.show()
}
fun View.showSnackbar(resId:Int,actionResId:Int ?= null,duration: Int = Snackbar.LENGTH_SHORT,
block:(()->Unit)?= null){
val snackbar = Snackbar.make(this,resId,duration)
if (actionResId != null && block != null){
snackbar.setAction(actionResId){
block()
}
}
snackbar.show()
}
//這里運用了kotlin地高階函式地用法,使得我們可以設定action里面地具體操作
//也運用了擴展函式
八、Git高階用法
主要涉及分支地用法,解決版本控制相關問題
//add完一定要記得提交,不然就會出現一些不可知地問題
//分支這個概念主要是解決已上線地版本出現一些小問題,需要修復,但另外一個版本也在開發,所以先創建一個
//分支把現版本完善,等新版本完成之后進行合并,這樣新版本也不會存在問題
git branch
//查看分支
git branch version1.0
//創建一個名為version1.0的分支
git checkout version1.0
//切換到此分支
git merge version1.0
//將version1.0上的分支合并到現在的分支上
//可能產生代碼沖突,不過只要即使的發現解決起來應該沒問題
git branch -D version1.0
//洗掉分支
//遠程版本庫協作
git clone URL
//下載遠程的代碼到本地
git push URL 分支
//將本地修改的代碼同步到遠程分支上
git fetch URL 分支
//將遠程代碼同步到本地,不過不會執行合并操作
//而是另外儲存在一個名為 URL/分支 的分支上
git diff URL/分支
//可以查看修改的內容
git merge URL/分支
//然后進行合并
//不過也可以直接使用pull命令
//此命令將fetch和merge命令進行了合并
git pull URL 分支
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/291672.html
標籤:其他
上一篇:到底學哪個?
