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

相关文章

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

C++ 多态性实战之何时使用 virtual 和 override的问题解析

《C++多态性实战之何时使用virtual和override的问题解析》在面向对象编程中,多态是一个核心概念,很多开发者在遇到override编译错误时,不清楚是否需要将基类函数声明为virt... 目录C++ 多态性实战:何时使用 virtual 和 override?引言问题场景判断是否需要多态的三个关

Springboot主配置文件解析

《Springboot主配置文件解析》SpringBoot主配置文件application.yml支持多种核心值类型,包括字符串、数字、布尔值等,文章详细介绍了Profile环境配置和加载位置,本文... 目录Profile环境配置配置文件加载位置Springboot主配置文件 application.ym

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用