Material Design系列教程(2) - FloatingActionButton

簡介

FloatingActionButton:懸浮按鈕。

首先看下其文檔:

FloatingActionButton

FloatingActionButton 是一個 ImageButton,其包名為android.support.design.widget.FloatingActionButton,所以它是存在于design 包中的,不是在 v7 包,所以要導(dǎo)入design包:

implementation 'com.android.support:design:<version>'

FloatingActionButton 代表一個頁面中最主要的操作,其位于 UI 最頂層(懸?。?。

FAB 通常有兩種尺寸:

  • 56 * 56 dp :默認的大小,最常用的尺寸。
  • 40 * 40 dp :Mini版。
    FAB 中間的圖標,google 推薦的大小是:24 * 24dp。
    其尺寸大小可以通過屬性fabSize進行設(shè)置。

FAB 間接繼承于 ImageView,因此你可以控制由 setImageDrawable(Drawable) 設(shè)置的 icon。

FAB 的背景顏色默認為主題的colorAccent,如果你想在程序運行時進行控制,可以通過 setBackgroundTintList(ColorStateList)。

FAB的 XMl 屬性除了繼承自View,ImageView的屬性外,Android 5.0后引入的常用新屬性如下:

  • app:elevation="50dp":陰影的高度,elevation是Android 5.0中引入的新屬性,設(shè)置該屬性使控件有一個陰影,感覺該控件像是“浮”起來一樣,這樣達到3D效果。對應(yīng)的方法:setCompatElevation(float)

  • app:fabSize="normal":FAB的大小,為normal時,大小為:56 * 56dp ,為mini時,大小為: 40 * 40 dp。

  • app:backgroundTint="#31bfcf":設(shè)置FAB的背景顏色。這里需要注意的是,:backgroundTint這個屬性的值是一個 ColorStateList 類型,如果你誤用一個 colors 文件中定義的一個顏色值,在點擊時將無法產(chǎn)生漣漪(ripple)交互效果。

  • android:clickable="true":當你使用了backgroundTint屬性來改變系統(tǒng)的背景紅色,一定要記得設(shè)置clickable屬性為true,否則也是無法產(chǎn)生漣漪(ripple)交互效果的;

  • app:rippleColor="#e7d16b":點擊FAB時,形成的波紋顏色。其默認值為 theme 中的colorControlHighlight。

注1: 使用上述屬性前,先要引入命名空間:

xmlns:app="http://schemas.android.com/apk/res-auto"

注2: 在 Android 5.x 中 FAB 存在的一些問題:

  • 沒有陰影:
    解決方法:設(shè)置app:borderWidth="0dp"

  • 按上述設(shè)置后,陰影出現(xiàn)了,但是竟然有矩形的邊界!
    解決方法:需要設(shè)置一個 margin 的值。在5.0之前,會默認就有一個外邊距(不過并非是margin,只是效果相同)。

綜上,F(xiàn)AB 健壯的布局為:增加如下兩行配置

app:borderWidth="0dp"
android:layout_margin="20dp"

示例

下面介紹下 FloatingActionButton 最基礎(chǔ)的使用示例:

  1. 首先在布局文件中添加 FAB:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_margin="20dp"
        android:src="@drawable/emoticon"
        app:borderWidth="0dp" />

</RelativeLayout>
  1. Activity中添加單擊事件:
public class FloatingActionButtonActivity extends AppCompatActivity {

    private FloatingActionButton mFab;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fat);
        this.mFab = this.findViewById(R.id.fab);
        this.mFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(FloatingActionButtonActivity.this, "FAB clicked!!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

效果:

FAB

其實,F(xiàn)AB 配合著其他控件,能夠做出一些非常炫酷的交互動畫效果,不過本節(jié)就先不深入下去了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容