Material Design 实战

简介: 主要是google提出的一种设计应用的规范,并且为了方便开发者,Google将一系列设计好的组件进行了一些比较好的封装,使得我们普通的开发者也能设计出较为美观的界面,只要引入Material库就可以使用那些组件了

一、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 分支
目录
相关文章
|
Android开发
android 快速更改TabLayout的选中背景颜色。
android 快速更改TabLayout的选中背景颜色。
|
6月前
|
XML Java Android开发
Android关于BottomNavigationView效果实现指南
本文详细介绍了Android中BottomNavigationView的实现与定制方法,涵盖颜色设置、图标修改、字体大小调整及多色图标处理等问题。通过XML和Java代码两种方式,解决图标颜色变化、点击效果等问题,并提供去除ActionBar的实现步骤。适合初学者及进阶开发者参考,助力打造更美观、功能丰富的底部导航栏。文末附源码,方便实践操作。
630 28
Android关于BottomNavigationView效果实现指南
|
存储 算法 数据挖掘
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
本文介绍了2023年中国高校大数据挑战赛赛题B的Python实现方法,该赛题涉及DNA存储技术中的序列聚类与比对问题,包括错误率分析、序列聚类、拷贝数分布图的绘制以及比对模型的开发。
323 2
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
|
JavaScript 算法 前端开发
虚拟 DOM 如何提高应用的性能?
虚拟 DOM 通过减少真实 DOM 操作、高效的 Diff 算法、提升渲染性能、跨平台能力以及优化内存管理等多种方式,全面提高了应用的性能,为用户提供了更流畅、高效的交互体验,尤其在构建大型、复杂的前端应用时,其性能优势更加显著。
276 58
IntelliJ IDEA 解决控制台不能显示日志
IntelliJ IDEA 解决控制台不能显示日志
1506 0
|
Web App开发 前端开发 测试技术
【Docker项目实战】使用docker部署tabler后台模版
【10月更文挑战第10天】使用docker部署tabler后台模版
199 2
【Docker项目实战】使用docker部署tabler后台模版
HTML 统一资源定位器(Uniform Resource Locators)1
统一资源定位器(URL)是用于标识互联网上资源位置的标准格式。URL通常由方案、主机、域名、端口、路径和文件名组成,如 `http://www.runoob.com/html/html-tutorial.html`。大多数用户通过域名访问网站,因为域名比IP地址更容易记忆。URL在Web浏览器中用于请求页面,通过 `<a>` 标签实现链接跳转。
|
存储 监控 关系型数据库
DataX 概述、部署、数据同步运用示例
DataX是阿里巴巴开源的离线数据同步工具,支持多种数据源之间的高效传输。其特点是多数据源支持、可扩展性、灵活配置、高效传输、任务调度监控和活跃的开源社区支持。DataX通过Reader和Writer插件实现数据源的读取和写入,采用Framework+plugin架构。部署简单,解压即可用。示例展示了如何配置DataX同步MySQL到HDFS,并提供了速度和内存优化建议。此外,还解决了NULL值同步问题及配置文件变量传参的方法。
9043 5
|
数据可视化 API Python
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)
372 0
|
存储 人工智能