【问题标题】:How to create Inbox like floating action button in Android with Speed dial animation如何使用快速拨号动画在 Android 中创建类似于浮动操作按钮的收件箱
【发布时间】:2018-10-10 18:08:01
【问题描述】:

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

示例:

【问题讨论】:

    标签: android floating-action-button


    【解决方案1】:

    我使用 Floating Action Button Speed Dial 库找到了预期的输出。

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

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

    【讨论】:

    • 这里的“fab_link”是什么..?
    【解决方案2】:

    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 的项目的资源文件。

    我希望这个答案对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2015-11-08
      • 2014-12-26
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2015-03-28
      相关资源
      最近更新 更多