如何使用快速拨号动画在Android中创建像浮动操作按钮的收件箱

问题描述 投票:0回答:2

我想创建一个浮动动作按钮,动画显示内部快速拨号按钮,如谷歌开发的Inbox android应用程序。

例:

enter image description here

android floating-action-button
2个回答
2
投票

我通过使用浮动操作按钮快速拨号库找到了预期的输出。

该库可在Jcenter上使用,因此不需要其他存储库。

第1步:添加以下依赖项

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.speedDial:
            showToast("Link action clicked!");
            return false; // true to keep the Speed Dial open
        default:
            return false;
    }
}
});

资料来源:https://github.com/leinardi/FloatingActionButtonSpeedDial


1
投票

FloatingActionButtonSpeedDial是我发现的最适合您要求的图书馆。 它非常灵活,您可以发现存储库的Main Sample实现了许多可能的用例,例如浮动菜单中的添加/删除按钮,更改标签的颜色和按钮背景等。 我在此期间发现的唯一缺点是你必须以编程方式而不是在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的项目的资源文件。 我希望你觉得这个答案很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.