Android Material UI控件之MaterialButton

  • 正文

    • 1. 添加依赖
  • 2. 基本使用

    • ① 准备工作
  • ② 解决样式问题

  • 3. 基操勿六

    • ① 圆角按钮
  • ② 双圆角按钮

  • ③ 边框按钮

  • ④ 圆形按钮

  • ⑤ 图标按钮

  • ⑥ 圆角图标按钮

  • 4. 总结

前言

===============================================================

作为Android的开发者,常用控件肯定少不了按钮控件,常规的按钮控件,只能满足基本需求,而日常开发中,都会有渐变按钮,圆形按钮,或者立体按钮,这些都需要自己的设置样式,就拿圆角按钮来说,可能你会这是一个shape文件,然后设置背景和圆角的大小,最后在按钮的background属性中设置好,就是一个圆角的按钮了。这样就显得有些麻烦了,因为要你时碰到一个花里胡哨的UI和搞事情的产品,你就完犊子了。你会创建很多这样的drawable文件,并且每一个你还要命名规范,改起来是很费劲的。而MaterialButton就很好的帮你解决这些问题。让你的UI开发变得轻松一些。是骡子是马,牵出来溜溜,下面进入正文:

正文

===============================================================

1. 添加依赖


在你的app下的build.gradle中的dependencies闭包中增加如下依赖,然后Sync同步一下,你就可以名正言顺的使用里面的组件了。

implementation ‘com.google.android.material:material:1.2.0’

在用之前呢。我们最好来看看MaterialButton它里面的代码的大致情况。将项目工程切换到Project模式。然后展开最底部的External Libraries

在这里插入图片描述

然后找到MaterialButton

在这里插入图片描述

打开之后看下面这个图

在这里插入图片描述

可以得出什么内容呢?首先它继承了AppCompatButton,同时实现了CheckableShapeable,从这里可以得出这个MaterialButton比AppCompatButton要强,其次具备选中的能力,也就是它抢了Checkbox的饭碗,同时具备背景可塑性,踢倒了Drawable的奶瓶。看上去很是嚣张,你记住一个原则任何一次的继承肯定是为了比之前更优秀强大才会产生。正所谓青出于蓝而胜于蓝,我可以一层一层来剥下去,MaterialButton继承AppCompatButton,AppCompatButton继承Button,Button继承TextView,TextView继承View,View就是所有视图的底层了。在Android中,你写自定义View,只有三个类型,那就是继承View、继承ViewGroup、继承已有控件(如:TextView、Button、RecyclerView)。我好像扯远了,MaterialButton的源码也就1000多行,感兴趣的可以去了解每一个用法,或者再去继承改造一次。

2. 基本使用


为了方便演示,我先建一个Empty Activity

在这里插入图片描述

① 准备工作

在activity_main.xml中增加一个按钮,同时增加id

在这里插入图片描述

进入MainActivity。

在这里插入图片描述

因为现在不是一个控件的点击了,所以要根据id来区分不同的控件的点击,同时我也不想写多余的跳转代码。好了,下面进入MaterialButtonActivity,这才是今天的主角啊。

② 解决样式问题

在material_button.xml中增加一个按钮,如下图所示

在这里插入图片描述

然后你直接运行,不管你是在模拟器还是真机上,都会崩溃。(PS : 这不是坑爹吗?玩到这一步你可能脏话已经在嘴边了。)但是我会让你咽下去的。冷静下来想一下,你会发现你的崩溃是在进入这个Activity的时候发生的。也就是说完全是这个MaterialButton的锅,而且你的xml也只是设置为宽高和文字而已,没理由会崩溃啊。到这个时候你会先怀疑自己、然后怀疑Google、最后怀疑人生,什么垃圾控件,玩个锤子啊,问题发生了当然是要解决的,一般这种崩溃都会有日志的。

在这里插入图片描述

从上面的日志来看报错的原因在xml的第10行

在这里插入图片描述

但是这不是具体的原因,我们再往下滑动寻找错误的根源。

在这里插入图片描述

皇天不负苦心人,报错很明显就是这里了,你可能不是很理解这句话的意思。张麻子:师爷,翻译翻译(出自:《让子弹飞》)

在这里插入图片描述

哦豁,原来是样式的问题,那就不是什么大问题了。那么怎么解决呢?方案有三:第一个是整个项目使用Material样式,第二个是当前Activity使用Material样式,第三个是这个控件使用Material样式。下面来实践一下,打开styles.xml。增加如下代码:

如果你看过我之前写ShapeableImageView的文章,你就会觉得很熟悉了。下面回到material_button.xml,再增加一个按钮,然后增加样式。如下图所示:

在这里插入图片描述

然后运行一下:

在这里插入图片描述

当然还有更多的玩法,可以自己去设置。

③ 边框按钮

现在colors.xml中增加两个颜色

#FFF

#000

然后回到material_button.xml,再增加一个按钮,如下图所示:

在这里插入图片描述

这里说明一下,为什么我加了一个padding=“1dp”。因为这个描边是内外描边,如果不加这个1dp的填充,会出现上下按钮最边缘出描边宽度一半的切割,我之前在低版本的Android手机上就是这样写的,不过在Android11中好像修复了这个问题,我不设置padding="1dp"也可以正常描边了,运行一下:

在这里插入图片描述

刚才是有圆角的,再来看没有圆角的。

在这里插入图片描述

在这里插入图片描述

④ 圆形按钮

在这里插入图片描述

MaterialButton具有默认的内边距,可以通过insetLeft、insetTop、insetRight、insetBottom来改变默认的填充值,如果不设置就是默认的6dp的填充,基本上来说就是上下内填充默认为6dp,运行一下:

在这里插入图片描述

增加如下代码再运行一下

app:strokeWidth=“4dp”

app:cornerRadius=“60dp”

在这里插入图片描述

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

尾声

在我的博客上很多朋友都在给我留言,需要一些系统的面试高频题目。之前说过我的复习范围无非是个人技术博客还有整理的笔记,考虑到笔记是手写版不利于保存,所以打算重新整理并放到网上,时间原因这里先列出面试问题,题解详见:


展示学习笔记

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

高频题目。之前说过我的复习范围无非是个人技术博客还有整理的笔记,考虑到笔记是手写版不利于保存,所以打算重新整理并放到网上,时间原因这里先列出面试问题,题解详见:

[外链图片转存中…(img-HowIIKB7-1712507224155)]
展示学习笔记
[外链图片转存中…(img-tiIBjm5K-1712507224155)]
[外链图片转存中…(img-qP4FZNId-1712507224155)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值