AndroidASD完全解析03之FloatingActionButton

2024-01-19 23:08

本文主要是介绍AndroidASD完全解析03之FloatingActionButton,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面我们介绍过了NavigationView和TextInputLayout这两个控件了,下面我们介绍第三个控件FloatingActionButton,这一篇也是ASD完全解析系列的第三篇,有兴趣的可以去看看前面两个控件的介绍:AndroidADS完全解析01之NavigationView AndroidADS完全解析02之TextInputLayout,好了,我们开始学习FloatingActionButton这个控件吧。

概述

这是官方对FloatingActionButton的描述:

Floating action buttons are used for a special type of promoted action. They are distinguished by a circled icon floating above the UI and have special motion behaviors related to morphing, launching, and the transferring anchor point.

Floating action buttons come in two sizes: the default and the mini. The size can be controlled with the fabSize attribute.

As this class descends from ImageView, you can control the icon which is displayed via setImageDrawable(Drawable).

The background color of this view defaults to the your theme's colorAccent. If you wish to change this at runtime then you can do so via setBackgroundTintList(ColorStateList).

简单的说FloatingActionButton(下面简称FAB)是Google提供的在界面上显示一个悬浮按钮,可以提供用户进行交互的。这个FAB的使用非常简单,但是,也要根据项目的需要进行使用,使用的恰当会给用户良好的体验,不恰当的话会破坏APP的使用体验,下面我们具体使用一下这个FAB吧。

使用

使用之前还是需要在bundle.gradle文件中添加如下代码:

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

照例,我们来介绍一下FAB的提供的属性设置方法:

  • getBackgroundTintList()方法:如果指定有背景,返回一个可以绘制的背景色调

  • getBackgroundTintMode()方法:获取到背景色调模式

  • hide()方法:隐藏FAB

  • setBackground(Drawable)方法:设置背景图片

  • setBackgroundTintList(ColorStateList tint)方法:与getBackgroundTintList()对应

  • setBackgroundTintMode(PorterDuff.Mode tintMode)方法:与getBackgroundTintMode()方法对应

  • setRippleColor(int color)方法:设置ripple color

  • show()方法:显示FAB

XML属性的话跟ImageView差不多,不过有一个不同app:fabSize="",有两个值可以设置,分别是:normal和mini

使用的话就直接跟Imageview差不多,下面我们通过一个简单的例子体会一下吧:

首先是Activity代码:

package com.example.adsdemo;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;/*** Created by Devin on 2016/8/15.*/
public class FABActivity extends AppCompatActivity {
private FloatingActionButton fab_show_1;
private FloatingActionButton fab_show_2;
private FloatingActionButton fab_show_3;@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fab);fab_show_1 = (FloatingActionButton) findViewById(R.id.fab_show_1);fab_show_2 = (FloatingActionButton) findViewById(R.id.fab_show_2);fab_show_3 = (FloatingActionButton) findViewById(R.id.fab_show_3);fab_show_1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ToastUtils.showToast(FABActivity.this, "点击的是第一个FAB");}});fab_show_2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ToastUtils.showToast(FABActivity.this, "点击的是第二个FAB");}});fab_show_3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ToastUtils.showToast(FABActivity.this, "点击的是第三个FAB");}});
}
}

非常简单,就是给三个FAB设置一个点击事件而已,接着是XML布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab_show_1"android:layout_width="wrap_content"android:layout_height="wrap_content"app:backgroundTint="@color/colorAccent"app:elevation="8dp"app:fabSize="normal"app:rippleColor="@color/colorPrimaryDark"/>
</RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab_show_2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"app:backgroundTint="@color/colorAccent"app:elevation="8dp"app:fabSize="auto"app:rippleColor="@color/colorPrimaryDark"/>
</RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab_show_3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"app:backgroundTint="@color/colorAccent"app:elevation="8dp"app:fabSize="mini"app:rippleColor="@color/colorPrimaryDark"/>
</RelativeLayout>
</LinearLayout>

在XML中,app:elevation属性是设置点击时的阴影效果,fabsize是设置大小。

然后是实现的效果图:

2267876-e0f6a3e9aff56eec.gif

FAB就简单介绍到这里了,我们在项目中使用这个的时候还是需要注意一下的,最后附上国内镜像API,猛戳这里

这篇关于AndroidASD完全解析03之FloatingActionButton的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624001

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St