一、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)
这里有一个比较好用的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()
}
"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()
}
八、Git高阶用法
主要涉及分支地用法,解决版本控制相关问题
git branch
git branch version1.0
git checkout version1.0
git merge version1.0
git branch -D version1.0
git clone URL
git push URL 分支
git fetch URL 分支
git diff URL/分支
git merge URL/分支
git pull URL 分支
|