如何使用快速拨号动画在 Android 中创建类似浮动操作按钮的收件箱
How to create Inbox like floating action button in Android with Speed dial animation
我想创建一个 浮动操作按钮,它将动画显示内部快速拨号按钮,例如 收件箱 android 应用程序由 Google 开发。
示例:
我使用 浮动操作按钮快速拨号 库找到了预期的输出。
该库在 Jcenter 上可用,因此不需要额外的存储库。
第一步:添加如下依赖
implementation "com.leinardi.android:speed-dial:2.0.0"
第 2 步: 将 SpeedDialView
添加到您的布局中:
<com.leinardi.android.speeddial.SpeedDialView
android:id="@+id/speedDial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
app:sdMainFabClosedSrc="@drawable/ic_add_white_24dp" />
步骤 3: 将项目添加到 SpeedDialView
:
SpeedDialView speedDialView = findViewById(R.id.speedDial);
speedDialView.addActionItem(
new SpeedDialActionItem.Builder(R.id.fab_link, R.drawable.ic_link_white_24dp)
.create());
第 4 步: 添加点击监听器:
speedDialView.setOnActionSelectedListener(new SpeedDialView.OnActionSelectedListener() {
@Override
public boolean onActionSelected(SpeedDialActionItem speedDialActionItem) {
switch (speedDialActionItem.getId()) {
case R.id.fab_link:
showToast("Link action clicked!");
return false; // true to keep the Speed Dial open
default:
return false;
}
}
});
来源: https://github.com/leinardi/FloatingActionButtonSpeedDial
FloatingActionButtonSpeedDial 是我发现的最适合您要求的库。
它非常灵活,您可以发现存储库的 Main Sample 实现了许多可能的用例,例如浮动菜单中的 add/remove 按钮,更改标签和按钮背景的颜色等。
同时我发现的唯一缺点是您必须以编程方式添加按钮,而不是在 xml 布局文件中。
无论如何,第一个答案很好,但他错过了一个小细节。当您创建要添加到 SpeedDialView 的按钮时:
speedDialView.addActionItem(
new SpeedDialActionItem.Builder(R.id.fab_link, R.drawable.ic_link_white_24dp)
.create());
R.id.fab_link 是新的 ActionItem(浮动按钮)的 id,所以你可以在 speedDialView 的 onClickListener 中引用它:
speedDialView.setOnActionSelectedListener(new SpeedDialView.OnActionSelectedListener() {
@Override
public boolean onActionSelected(SpeedDialActionItem actionItem) {
switch (actionItem.getId()) {
case R.id.fab_add:
// do something
break;
case R.id.fab_link:
// do something else
break;
}
return true; // To keep the Speed Dial open
}
});
只是一个@IdRes,一个整数,应该是一个id资源引用。
因此,您可以像他们在官方示例 here 中那样做,并创建一个包含类型为 id 的项目的资源文件。
希望此回答对您有所帮助。
我想创建一个 浮动操作按钮,它将动画显示内部快速拨号按钮,例如 收件箱 android 应用程序由 Google 开发。
示例:
我使用 浮动操作按钮快速拨号 库找到了预期的输出。
该库在 Jcenter 上可用,因此不需要额外的存储库。
第一步:添加如下依赖
implementation "com.leinardi.android:speed-dial:2.0.0"
第 2 步: 将 SpeedDialView
添加到您的布局中:
<com.leinardi.android.speeddial.SpeedDialView
android:id="@+id/speedDial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
app:sdMainFabClosedSrc="@drawable/ic_add_white_24dp" />
步骤 3: 将项目添加到 SpeedDialView
:
SpeedDialView speedDialView = findViewById(R.id.speedDial);
speedDialView.addActionItem(
new SpeedDialActionItem.Builder(R.id.fab_link, R.drawable.ic_link_white_24dp)
.create());
第 4 步: 添加点击监听器:
speedDialView.setOnActionSelectedListener(new SpeedDialView.OnActionSelectedListener() {
@Override
public boolean onActionSelected(SpeedDialActionItem speedDialActionItem) {
switch (speedDialActionItem.getId()) {
case R.id.fab_link:
showToast("Link action clicked!");
return false; // true to keep the Speed Dial open
default:
return false;
}
}
});
来源: https://github.com/leinardi/FloatingActionButtonSpeedDial
FloatingActionButtonSpeedDial 是我发现的最适合您要求的库。
它非常灵活,您可以发现存储库的 Main Sample 实现了许多可能的用例,例如浮动菜单中的 add/remove 按钮,更改标签和按钮背景的颜色等。
同时我发现的唯一缺点是您必须以编程方式添加按钮,而不是在 xml 布局文件中。
无论如何,第一个答案很好,但他错过了一个小细节。当您创建要添加到 SpeedDialView 的按钮时:
speedDialView.addActionItem(
new SpeedDialActionItem.Builder(R.id.fab_link, R.drawable.ic_link_white_24dp)
.create());
R.id.fab_link 是新的 ActionItem(浮动按钮)的 id,所以你可以在 speedDialView 的 onClickListener 中引用它:
speedDialView.setOnActionSelectedListener(new SpeedDialView.OnActionSelectedListener() {
@Override
public boolean onActionSelected(SpeedDialActionItem actionItem) {
switch (actionItem.getId()) {
case R.id.fab_add:
// do something
break;
case R.id.fab_link:
// do something else
break;
}
return true; // To keep the Speed Dial open
}
});
只是一个@IdRes,一个整数,应该是一个id资源引用。
因此,您可以像他们在官方示例 here 中那样做,并创建一个包含类型为 id 的项目的资源文件。
希望此回答对您有所帮助。