java浮动_java – 如何使用真正的浮动操作按钮(FAB)扩展?

5Ojwz.gif

您可以创建一个实用程序类,使用ConstraintLayout将MaterialButton设置为Extended FloatingActionButton.您首先需要在xml中声明MaterialButton的两个状态,然后使用TransitionManager在它们之间进行动画处理.

你可以阅读关于它的媒体帖子here,与此同时,我会在这里添加一些相关的代码.

折叠的FAB状态:

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

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

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/bg_fab"

android:elevation="8dp">

android:id="@+id/fab"

style="@style/Widget.MaterialComponents.Button.UnelevatedButton"

android:layout_width="56dp"

android:layout_height="56dp"

app:cornerRadius="56dp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent" />

扩展的FAB状态:

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

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

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:elevation="8dp"

android:background="@drawable/bg_fab">

android:id="@+id/fab"

style="@style/Widget.MaterialComponents.Button.UnelevatedButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:cornerRadius="56dp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent" />

背景图纸:

和相关的Java扩展代码:

private void setExtended(boolean extended, boolean force) {

if (isAnimating || (extended && isExtended() && !force)) return;

ConstraintSet set = new ConstraintSet();

set.clone(container.getContext(), extended ? R.layout.fab_extended : R.layout.fab_collapsed);

TransitionManager.beginDelayedTransition(container, new AutoTransition()

.addListener(listener).setDuration(150));

if (extended) button.setText(currentText);

else button.setText("");

set.applyTo(container);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值