Android修行手册 - FloatingActionButton全解

举报
芝麻粒儿 发表于 2022/05/29 11:19:55 2022/05/29
【摘要】 👉关于作者众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)欢迎关注公众号【空名先生】获取更多资源和交流! 👉前提这是小空坚持写的Android新手向系列,欢迎...

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

这是小空坚持写的Android新手向系列,欢迎品尝。

大佬(×)

新手(√)

👉实践过程

😜初识

FloatingActionButton简称FAB,从字面意思理解她是悬浮的按钮。她是从5.0开始,Material Design设计中的其中一个。

使用的话需要,项目的build.gradle里面带有支持库,版本号随时变化

implementation 'com.google.android.material:material:1.3.0'

如果你是用较新版本Android Studio创建的项目,默认应该是存在的,否则需要自己配置。

先简单看一下使用

<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/icon_xin_no" />

FloatingActionButton效果1.gif

从上图可以看出默认情况下有个背景颜色,且有阴影效果,点击后有涟漪的效果【rippleColor】,并且阴影效果增大。

那么她是怎么实现的呢?

如果你没设置,背景颜色默认使用的是属性文件【style.xml】中的【colorAccent】或【colorSecondary】属性

在这普及下PrimaryColor、SecondaryColor、AccentColor的区别

  • PrimaryColor:为主题颜色。也就是app的主要颜色,即整个屏幕和所有控件的主要颜色,首选颜色,不同主题颜色不同。
  • SecondaryColor:二级颜色也是提示性颜色。这颜色一般比PrimaryColor亮一些或暗一些,取决于白天模式还是黑暗模式。一般用于提示相关动作或信息,提示性颜色。
  • AccentColor:辅助色这个也称为交互性颜色。这颜色一般用于交互性的控件颜色

😜基本属性

  • android:src】:显示的图标,不要太大
  • app:backgroundTint】:默认情况的背景颜色
  • app:rippleColor】:按下状态的背景颜色
  • app:elevation】:默认状态底部的阴影大小(默认6dp)
  • app:pressedTranslationZ】:按下状态的阴影大小(默认12dp)
  • app:borderWidth】:边框的宽度
  • app:layout_anchor】:该属性需要父布局为【CoordinatorLayout】,设置FAB的锚点,即以哪个控件为参照设置位置,可结合其他控件使用,有限制
  • app:layout_anchorGravity】:该属性需要父布局为【CoordinatorLayout】,FAB相对于锚点的对齐位置
  • app:fabSize】:浮动按钮大小normal或mini,内置的常用两个尺寸56dp和40dp
<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/white"
        android:src="@mipmap/icon_xin_no"
        app:fabSize="normal"
        app:pressedTranslationZ="18dp"
        android:foregroundGravity="center"
        app:rippleColor="#ff0000" />

FloatingActionButton效果2.gif

当添加了【backgroundTint】后运行你会发现有个边框的效果,可以使用【app:borderWidth=“0dp”】来解决,或者你想更宽一些都可以。

要想中间图片居中,【layout_width】和【layout_height】都为【wrap_content】,自定义设置【app:fabCustomSize】即可定义大小。

😜点击事件

和普通按钮一样。

setOnClickListener-点击事件

setOnLongClickListener-长按事件

😜和SnackBar的故事

SnackBar是material design风格中的另一个控件,它和Toast很相似。但又有明确的区分,不要将 Snackbar 和Toast 混谈,应用场景也不同,Toast 仅仅只是一闪而过的提示,用户并不能进行操作,而 Snackbar 却不一样,它允许在提示当中加入一个交互操作,当用户点击的时候可以进行额外的逻辑操作,提升了用户体验。

当SnackBar和FloatingActionButton两个控件结合使用的可以产生很好的联合动效:Snackbar 从底部弹出的时候FlaotingActionButton 也会上跑,反之亦然。

Snackbar 需要配合CoordinatorLayout使用。

FloatingActionButton效果3.gif

FloatingActionButton floatingButton = findViewById(R.id.floatingButton);
floatingButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Snackbar.make(coordinatorLayout,"展示Snackbar",Snackbar.LENGTH_SHORT).setAction("关闭", v1 -> {
            Log.d("TAG", "点击了关闭");
        }).show();
    }
});

FloatingActionButton效果4.gif

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。