瘋狂 Android 講義, 4/e – 可折疊懸浮按鈕(FloatingActionButton)範例 P107~P103
瘋狂 Android 講義, 4/e – 可折疊懸浮按鈕(FloatingActionButton)範例 P107~P103
資料來源:
https://github.com/daichangya/book/tree/master/android
https://pan.baidu.com/s/1d_xYJI0UQ_1tQzSj_V_NIg 提取码:70ch
XML Code
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <!-- 嵌套一个约束布局来管理两个悬浮按钮 --> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#80000000" android:visibility="gone"> <!-- 下面省略了2个使用LinearLayout管理的悬浮按钮 --> <LinearLayout android:id="@+id/item1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="28dp" android:layout_marginBottom="86dp" android:orientation="horizontal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="end" android:text="购物车" android:textColor="@android:color/white" android:textSize="15sp" /> <android.support.design.widget.FloatingActionButton android:id="@+id/mini_fab01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/list" app:backgroundTint="#ff00ff" app:elevation="5dp" app:fabSize="mini" /> </LinearLayout> <LinearLayout android:id="@+id/item2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="12dp" android:orientation="horizontal" app:layout_constraintBottom_toTopOf="@+id/item1" app:layout_constraintEnd_toEndOf="@+id/item1" app:layout_constraintStart_toStartOf="@+id/item1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="end" android:text="继续购买" android:textColor="@android:color/white" android:textSize="15sp" /> <android.support.design.widget.FloatingActionButton android:id="@+id/mini_fab02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/list" app:backgroundTint="#ffff00" app:elevation="5dp" app:fabSize="mini" /> </LinearLayout> </android.support.constraint.ConstraintLayout> <!-- 使用约束布局将该按钮定位到界面右下角 --> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="20dp" android:layout_marginBottom="20dp" android:clickable="true" android:src="@drawable/add" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:fabSize="normal" app:elevation="5dp" app:backgroundTint="#31bfcf" app:rippleColor="#e7d161"/> </android.support.constraint.ConstraintLayout>
Java Code
package org.crazyit.ui;
import android.app.Activity;
import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.support.design.widget.FloatingActionButton;
import android.view.View;
/**
* Description:<br>
* 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a><br>
* Copyright (C), 2001-2020, Yeeku.H.Lee<br>
* This program is protected by copyright laws.<br>
* Program Name:<br>
* Date:<br>
*
* @author Yeeku.H.Lee kongyeeku@163.com<br>
* @version 1.0
*/
public class MainActivity extends Activity
{
private boolean isShow = false;
private ConstraintLayout content;
private FloatingActionButton fab;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fab = findViewById(R.id.fab);
content = findViewById(R.id.content);
// 定义事件监听器
View.OnClickListener listener = view -> {
switch (view.getId()) {
// 如果是fab悬浮按钮被点击,切换两个小的悬浮按钮的显示状态
case R.id.fab:
isShow = !isShow;
content.setVisibility(isShow ? View.VISIBLE : View.GONE);
break;
// 如果是被展开的悬浮按钮,折叠两个小的悬浮按钮
case R.id.mini_fab01: case R.id.mini_fab02:
content.setVisibility(View.GONE);
isShow = false;
break;
}
};
// 为悬浮按钮绑定事件处理监听器
fab.setOnClickListener(listener);
}
}