Android Material Design悬浮按钮和可交互提示

Android第一行代码——快速入门 Kotlin 编程(12.4 悬浮按钮和可交互提示) 打个比方,如果我们在执行删除操作的时候只弹出 一个Toast 提示,那么用户要是误删了某个重要数据的话,肯定会十分抓狂吧,但是如果我们增加一个Undo 按钮,就相当于给用户提供了一种弥补措施,从而大大降低了事故发生的概率,提升了用户体验。举个简单的例子,刚才弹出的 Snackbar 提示将悬浮按钮遮挡住了,而如果我们能让 CoordinatorLayout 监听到Snackbar 的弹出事件,那么它会自动将内部的 FloatingA ctionButton 向上偏移,从而确保不会被Snackbar 遮挡。 阅读详情

      博客内容:悬浮按钮FloatingActionButton、交互控件Snackbar和CoordinatorLayout。

悬浮按钮FloatingActionButton:

       Android Material Design这么叼,肯定会有立体设计咯!在官方的给出的示例中,最简单且最具代表性的立体设计非悬浮按钮莫属,这种按钮不属于主界面平面的一部分,而是位于另外一个维度,因此给人一种悬浮的错觉。

      这种错觉当属FloatingActionButton来实现,它是由Design Support库提供的控件。话到这份上,你懂的,使用FloatingActionButton需要添加Design Support库。Design Support默认情况下会使用来作为按钮的颜色,而我们还可以通过给按钮指定一个图标来表明这个按钮干什么用的。

      看例子咯!

第一步添加Design Support库:build.gradle/Module:app

 

compile 'com.android.support:design:23.4.0'

 

第二步:布局

 

 
<?xml version="1.0" encoding="utf-8"?> <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  xmlns:app="http://schemas.android.com/apk/res-auto">   <android.support.design.widget.FloatingActionButton  android:id="@+id/fab"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_gravity="bottom|end"  android:layout_margin="16dp"  app:elevation="8dp"  android:src="@drawable/language"/> </LinearLayout> 

 

布局中 bottom|end是什么意思呢?layout_gravity这个属性指定将这个控件放置到左下角,其中end的工作原理和start是一样的。elevation="8dp"是指定悬浮按钮的高度值。

第三步:Java代码----FloatingActionButton点击事件

 

public class MainActivity extends AppCompatActivity {
    private FloatingActionButton fab;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fab=(FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                        Toast.makeText(MainActivity.this,
                                "FloatingActionButton点击事件",
                                Toast.LENGTH_SHORT).show();
            }
        });
    }
}

 

运行效果图:

交互控件Snackbar和CoordinatorLayout:

       相信大家平常都是使用Toast作为提示工具使用,其实呀!还有比Toast更加先进的提示工具,那就是Snackbar。不要误会,Snackbar不是来替换Toast的,他们之间有着不同的应用场景。简单的说Toast提示的是用户没有办法在进行二次选择的事情或提示用户某件事件正在发生,而Snackbar在提示当中加入一个可交互按钮,就是后悔药的形式,再一次确定你是不是要进行某个操作。而且SnackBar允许用户向右滑动消除它,

      同为提示工具,SnackBar和Toast用法很相似。Snackbar的构造:

 

//参数分别是View(只要是当前界面布局的任意一View个都可以),提示信息,持续时间
public static Snackbar make(View view,CharSequence text,int duration)

SnackBar的常用方法:     

 

 

//用于设定Action的字体颜色
public Snackbar setActionTextColor( int color)
//设定提示的字体
public Snackbar setText( CharSequence message)
//设置回调,比如OnDismissed或者OnShown
public Snackbar setCallback(Callback callback)  
//调用SnackBar
public void show()     
//清除SnackBar
public void dismiss()   

不是说Snackbar有加入交互按钮(Action)的吗,怎么加入呢?

 

Snackbar.make(view,"Snackbar", Snackbar.LENGTH_LONG)
        .setAction("这是action", new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            Toast.makeText(MainActivity.this,
            "你点击了action",Toast.LENGTH_SHORT).show();
         }
    }).show();

看个例子:在FloatingActionButton例子的基础上改进:

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/web_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </WebView>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="16dp"
            app:elevation="8dp"
            android:src="@drawable/language"/>

    </android.support.design.widget.CoordinatorLayout>

</LinearLayout>

        细心的朋友会发现主布局多了个CoordinatorLayout,没错,这样写,就是让Snackbar弹出来的时候不要覆盖FloatingActionButton,看下面效果图,你会看到FloatingActionButton被挤上去了,形成动态效果,是不是很棒,要的就是这个效果。至于FloatingActionButton,简单介绍一下,CoordinatorLayout可以说是FrameLayout的加强版(升级了的意思),话说CoordinatorLayout也是由Design Support库提供的,优点是CoordinatorLayout可以监听所有子控件的各种事件。

Java核心代码:

 

public class MainActivity extends AppCompatActivity {
    private FloatingActionButton fab;
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView=(WebView) findViewById(R.id.web_view);
        fab=(FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view,"是否要使用百度",
                        Snackbar.LENGTH_SHORT)
                        .setAction("Yes",
                                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        webView.getSettings()
                                .setJavaScriptEnabled(true);
                        webView.setWebViewClient(
                                new WebViewClient());
                        webView.loadUrl("http://www.baidu.com");
                    }
                }).show();
            }
        });
    }
}

运行效果图:

 

本博客用到WebView控件,Android网络技术之WebView点击它即可深入了解。

Android学习笔记:界面设计Material Design的基本使用方法(一) 话不多说直接进入正题。本文所有使用到的图标资源下载地址:https://pan.baidu.com/s/1kWhs8mF使用到的图标、图片都在里面,按照文件夹名即可快速找到需要的资源。新建项目MaterialDesignTest,一切默认。一、标题栏Toolbar要想使用Toolbar,就必须替换掉默认的ActionBar。替换步骤分两步:1、隐藏ActionBar2、定义ToolbarActio... 阅读详情

相关推荐

Android使用Material Design实现悬浮按钮

前言 ​ 本文是对《Android第一行代码》第十二章《最佳UI体验——Material Design实战》中关于悬浮按钮实现的学习和记录,主要内容包括—— FloatingActionButton控件 Snackbar控件 CoordinatorLayout布局 其实关于悬浮按钮的实现十分简单,Design Support库中做了大量的封装,只需要运用以上3个基础控件就可以完成一个最简单的...

大山喵写博客的地方 1687

android 悬浮按钮点击展开动画,android仿微信浮窗的自动贴边可展开悬浮按钮-博客...

简介最近项目中需要做一个可展开的悬浮按钮,类似微信的浮窗功能。当一段时间不按按钮的时候,按钮能自动贴边,就像IOS的控制中心的功能。在Github上找了半天,找到一个大致符合要求的:FloatMenu,他里面写好了一个基类BaseFloatDailog,直接拿过来用就可以了。但是里面基类中有以下一些问题:1.通过继承BaseFloatDailog的方式不能设置展开菜单控件的监听2.构造函数中设置控...

weixin_39769039的博客 524

【Android】ToolBar,滑动菜单,悬浮按钮和可交互提示等的使用方法

Toolbar的强大之处在于,它不仅继承了 ActionBar的所有功能,而且灵活性很高,可以配合其他控件来完成一些Material Design的效果。任何一个新建的项目,默认都是会显示ActionBar。

2301_79977698的博客 2265

android FloatingActionButton 展示与收起

内容修改了一下,可能不是好,功能应该可以。 1、activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" .

风火纶回 589

Android kotlin系列讲解(实战篇)最佳的UI体验 - Material Design

UI体验 - Material Design

彬sir哥的博客 2272

FloatingActionButton实现 展开/折叠 的多级悬浮菜单

FloatingActionButton实现 展开/折叠 的多级悬浮菜单,亲测可用 ,FloatingActionButton实现 展开/折叠 的多级悬浮菜单

Android实现悬浮按钮(附带源码)

Android实现悬浮按钮(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 2375

SystemRDL:从寄存器描述到自动化生成的完整指南

本文详细介绍了SystemRDL如何通过“一份描述,多处生成”的理念,彻底解决芯片与FPGA设计中手动维护寄存器带来的不一致与低效问题。文章提供了从语言快速上手、核心组件讲解到使用PeakRDL工具链实现自动化代码与文档生成的完整实战指南,帮助硬件工程师构建高效、可靠的寄存器开发流程。

weixin_29243279的博客 656

Android 悬浮框按钮

Android 悬浮框按钮

qq_19688207的博客 2276

Android音频学习(八)——AudioFlinger线程

在 PlaybackThread 的实现中,Flag 用于标识线程的特殊行为或配置。

miemie2014的博客 1398

避坑指南:Abaqus网格划分中90%用户会遇到的5个质量陷阱(附解决方案)

本文深入剖析Abaqus网格划分中90%用户会遇到的5个典型质量陷阱,包括单元扭曲、扫掠网格失败、尺寸梯度控制等,并提供工程级解决方案。通过Python脚本和虚拟拓扑等技巧,帮助用户提升网格质量,确保有限元分析结果的可靠性,适用于CAE工程师和仿真分析师。

weixin_29243279的博客 96

Android Material UI控件之MaterialButton

Android Material UI控件之MaterialButton前言正文1. 添加依赖2. 基本使用① 准备工作② 解决样式问题3. 基操勿六① 圆角按钮② 双圆角按钮③ 边框按钮④ 圆形按钮 前言   作为Android的开发者,常用控件肯定少不了按钮控件,常规的按钮控件,只能满足基本需求,而日常开发中,都会有渐变按钮,圆形按钮,或者立体按钮,这些都需要自己的设置样式,就拿圆角按钮来说,可能你会这是一个shape文件,然后设置背景和圆角的大小,最后在按钮的background属性中设置好,就是一个

晨曦 5145

C51编程25-应用篇(单片机与电脑端实现wifi通讯)

单片机使用ESP-01S wifi模块与电脑端进行数据通讯。

qq_34343637的博客 1万+

Android界面设计:Material Design之悬浮按钮和可交互提示

在官方给出的示例中,最简单且最具代表性的立面设计就是悬浮按钮了,这种按钮不属于主界面平面的一部分,而是位于另外一个维度的,因此就会给人一种悬浮的感觉。打个比方,如果在执行删除操作的时候只弹出一个Toast提示,那么用户要是误删了某个重要数据的话,肯定会十分抓狂吧,但是如果增加一个Undo按钮,就相当于给用户提供了一种弥补措施,从而大大降低了事故发生的概率,提升了用户体验。可以看到,Snackbar从屏幕底部出现了,上面有我们设置的提示文字,还有一个“Undo”按钮,按钮是可以点击的。

jemo的博客 758

LTspice仿真实战:共模电感差模/共模插入损耗测试全流程(附WE 744821201参数)

本文以Würth Elektronik 744821201型号共模电感为例,详细介绍了在LTspice中搭建差模与共模插入损耗测试电路的全流程。通过从规格书提取关键参数、构建SPICE模型,到执行仿真并与官方数据对比,旨在帮助硬件工程师在PCB设计前期精准预测EMC性能,弥合器件选型与系统设计之间的鸿沟。

info6的博客 758

环形平滑标签(Circular Smooth Label, CSL)技术详解

环形平滑标签(CSL)是一种优化算法,旨在解决旋转目标检测中角度预测的边界问题。通过将角度回归转化为分类任务,并利用窗口函数平滑标签分布,CSL有效处理了角度周期性的梯度突变问题。其核心原理包括角度离散化和平滑标签编码,通过高斯、矩形、三角等窗口函数生成概率分布。CSL在技术实现上涉及标签转换流程、模型结构调整和损失函数优化,显著提升了检测精度和稳定性。在DOTA数据集上的实验表明,CSL在mAP和角度误差方面优于传统方法。应用场景包括遥感图像分析、自动驾驶和工业质检,部署时需注意旋转NMS编译和ONNX导

浩瀚之水的专栏 640

android 悬浮按钮和可交互提示,Material Design 实战 之第三弹—— 悬浮按钮和可交互提示(FloatingActionButton & Snackbar & Coordinato...

本模块共有六篇文章,参考郭神的《第一行代码》,对Material Design的学习做一个详细的笔记,大家可以一起交流一下:立面设计是Material Design中一条非常重要的设计思想,也就是说,按照Material Design的理念,应用程序的界面不仅仅只是一个平面,而应该是有立体效果的。在官方给出的示例中,最简单且最具代表性的立面设计就是悬浮按钮了,这种按钮不属于主界面平面的一部分,而是...

weixin_39820136的博客 489

GameFramework 框架详解之 Network网络模块 工具链

GameFramework(下面简称GF)Demo中,已经给我们提供了Network模块使用的protobuf使用的动态链接库protobuf-net.dll,但是GF并没有给我们提供protobuf相关的工具链,比如:1.proto文件自动导出对应c#的Packet类和PacketHandler类2.导出Packet类继承IReference以便使用引用池。3.自动生成Packet类和PacketHandler的Id,且保持和服务器Id一一对应。

TxNet 2902

Android >> 45. Material Design(三)悬浮按钮和可交互提示

FloatingActionButton 和普通Button 没什么两样,首先xml 文件中添加控件,然后java 文件中获取实例并处理点击事件。 <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http:/...

原谅我这一生不羁放纵爱自由 432

【企业智能体开发】优化模型成本、延迟与失败降级

小林的培训快开始时,服务台花很久“思考最优回答”,体验并不会更好。反过来,为了省钱而始终选最轻的模型,若连房间、连接方式和任务状态都识别不稳,后续错误检索和重复建单会造成更大代价。企业 Agent 的优化对象不是单次模型调用价格,而是任务在可接受时间内、安全地推进到正确结果的总成本。

Mr数据杨 893

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 学习之《第一行代码》第二版 笔记(二十二)Material Design 实战 —— 悬浮按钮和可交互提示

实现基础: Android 学习之《第一行代码》第二版 笔记(二十一)Material Design 实战 —— Toolbar 和 滑动菜单 一、悬浮按钮(FloatingActionButton) FloatingActionButton 是Design Support 库中提供的一个控件,可帮助我们比较轻松地实现悬浮按钮的效果,默认使用colorAccent 来作为按钮的颜色。 1. 效果图...

Nicholas_hzf的博客 466

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

第二行代码学习笔记——第十二章:最佳的 UI 体验——Material Design 实战

本章要点Android为了统一界面风格,在2014年的 Google I/O 大会上推出了一套全新的界面设计语言——Material Design。12.1 什么是Material DesignMaterial Design 是由Google的设计工程师们基于传统优秀的设计原则,给丰富的创意和科学技术所发明的一套全新的界面设计语言,包含了视觉,运动,互动效果等特性。它的出现,使Android的UI界

JiangWeiHu的博客 2099

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

安卓学习之Material Design

1.什么是material desing 一套全新的界面设计语言,包含了视觉、运动、互动效果等特性。一言以蔽之,好看! 2.Toolbar 1.打开res/values/styles.xml文件,代码如下所示 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> &lt

qq_39176095的博客 598

Material Design

安卓学习

weixin_73869857的博客 162

《第一行代码Android》学习总结第十二章 Material Design

        它是由谷歌设计师基于传统优秀的设计原则,结合丰富的创意和科学技术所发明的一套全新的界面设计语言,包括了视觉、运动、互动效果等特性。 一、Toolbar (一)创建Toolbar          Material控件中的一个控件,类似于ActionBar。 1、将res/values/styles.xml文件中的parent属性改为Theme.AppCompat.Light...

LBW9368的博客 633

第一行代码----Material Design(4-5)

4.悬浮按钮和可交互提示 FloatingActionButton 是 Design Support 提供的一个控件,用它可以轻松实现悬浮按钮的效果。 首先我们还是先把悬浮按钮的图标图片添加进去,然后修改activity_main.xml的代码: &amp;amp;amp;amp;lt;android.support.design.widget.FloatingActionButton android:id=&amp;amp;amp;quot;@...

后来者的博客 469
上一篇: Android Material Design NavigationView
下一篇: 程序员们,曾经是否有个bug让你开始怀疑人生
小红妹
博客等级 码龄10年 151粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值