【问题标题】:How is floating action button created?浮动操作按钮是如何创建的?
【发布时间】:2016-02-18 02:00:50
【问题描述】:

在使用android开发者提供的浮动操作按钮时,我不禁想知道他们究竟是如何从头开始实现浮动操作按钮的。

1) 我想知道浮动操作按钮是如何构建的

2) android 是如何仅将加号设置为其他东西的动画?

这可能是其他帖子的重复,但我已经检查过了,似乎找不到任何帖子问同样的问题。如果您发现有人提出类似问题,请告诉我。

我的帖子与这个帖子不同:How can I add the new "Floating Action Button" between two widgets/layouts 因为上面的帖子只解释了如何使用 android FAB 库,并没有解释如何从头开始创建 FAB。

【问题讨论】:

  • 嘿,有趣的是你推荐了那个帖子。在发布这个之前我已经检查过它,它只告诉你如何使用 android FAB 库并且我已经知道了。问题是我真的很好奇他们是如何从头开始创建的。
  • 它不重复,因为我看到@Xoce
  • 你应该查看FAB Class的官方文档。 ..Here..
  • 设计库全部开源,大家可以自己看看。您甚至可以直接在 Android Studio 中查看源代码。
  • 哦?你能解释一下我该怎么做吗?

标签: java android


【解决方案1】:

FloatingActionButton 类主要扩展了VisibilityAwareImageButton,后者扩展了imagebutton。因此,从头开始,您应该从扩展 imagebutton 开始。然后,当您获得 VisibilityAwareImageButton 时,您可以创建您的 FloatingButton 类。 VisibilityAwareImageButton 的代码如下

package android.support.design.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;

class VisibilityAwareImageButton extends ImageButton {

private int mUserSetVisibility;

public VisibilityAwareImageButton(Context context) {
    this(context, null);
}

public VisibilityAwareImageButton(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public VisibilityAwareImageButton(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    mUserSetVisibility = getVisibility();
}

@Override
public void setVisibility(int visibility) {
    internalSetVisibility(visibility, true);
}

final void internalSetVisibility(int visibility, boolean fromUser) {
    super.setVisibility(visibility);
    if (fromUser) {
        mUserSetVisibility = visibility;
    }
}

final int getUserSetVisibility() {
    return mUserSetVisibility;
}
} 

他们是如何创建浮动按钮的:

源代码可以在下面的google链接中找到

https://android.googlesource.com/platform/frameworks/support/+/master/design/src/android/support/design/widget/FloatingActionButton.java?autodive=0%2F%2F

VisibilityAwareImageButton 代码取自以下链接 https://github.com/android/platform_frameworks_support/blob/master/design/base/android/support/design/widget/VisibilityAwareImageButton.java

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 2019-12-04
    • 2015-12-26
    • 2015-05-15
    • 2014-12-26
    • 1970-01-01
    • 2020-11-19
    • 2015-06-25
    相关资源
    最近更新 更多